我是iOS的新手,我正在努力弄清楚如何将代码的一部分更改为2,而不是2(如果可能的话)(如果可能的话,int和double)。我理解代码的作用,但不知道如何实现多个返回?
-(int)findmaxpos:(double*)array l:(int)length s:(int)start e:(int)end{
// Find array ending point to avoid exception
int new_end = MIN(end,length-1);
// Find array mean
double mean = 0;
for (int i = start; i<= new_end; i++){
mean += array[i];
}
mean = mean / (new_end-start+1);
// Calculate variance
double var = 0;
for (int i = start; i<= new_end; i++){
var += pow((array[i] - mean),2);
}
var = var / (new_end-start+1);
double sd = sqrt(var);
// Calculate limit add 2.5* standart deviation to get approximatelly 95% of the values
double limit = mean + (2.5 * sd);
// Find first position above limit
int pos = -1;
while (pos<0) {
for (int i=start; i<=new_end; i++) {
if (array[i]>=limit){
pos = i;
break;
}
}
limit = limit * 0.9;
}
double max =array[pos];
// Check neibouring 10 positions to find a value greater than current.
for (int i=MAX(pos-5,start); i<=MIN(new_end,pos+5); i++) {
if (array[i]>=max){
max = array[i];
pos = i;
}
}
// Return value
//cast max as double??
return pos; //20/02 max inclusion}
发布于 2015-02-21 15:32:58
确实,目标C不允许返回多个值。您可以使用NSArray返回多个值,但我个人更喜欢NSDictionary。就像。
- (NSDictionary*)doSomeTaskAndReturnMultipleValues {
//Do some task let's say you have some objects to return named a,b,c
return @{@"key1":a, @"key2":b, @"key3":c};
}这允许您根据键值对返回值,而不是取决于返回值的顺序,这很容易出错。
如果仍然需要,则可以使用数组,如果知道需要按特定顺序返回值的话。
- (NSArray*)doSomeTaskAndReturnMultipleValues {
//Do some task let's say you have some objects to return named a,b,c
return @[a,b,c];
}希望这能有所帮助。
发布于 2015-02-21 15:22:03
目标-C不允许多个返回值。这样做的标准方法是将两个返回值封装在一个数组中,比如NSArray,或者创建一个您将返回的自定义结构,该结构具有匹配的成员。
https://stackoverflow.com/questions/28647203
复制相似问题