私はObjective-Cで任意に多くの数を平均化する方法に取り組んでおり、これがこれまでの私の方法です。
-(double)average:(double)num, ...
{
va_list args;
va_start(args, num);
double currentAverage = num;
long long timesAveraged = 1;
for(double d in args)
currentAverage = ((currentAverage * timesAveraged) + d) / ++timesAveraged;//Error occurs on this line
return currentAverage;
}
ただし、コンパイルすると「Selector element does not have a valid object type
」というエラーが発生するため、最初の解決策はメソッドを次のように変更することでした。
-(double)average:(double)num, ...
{
va_list args;
va_start(args, num);
double currentAverage = num;
long long timesAveraged = 1;
for(NSNumber *d in args)
currentAverage = ((currentAverage * timesAveraged) + [d doubleValue]) / ++timesAveraged;//Error occurs on this line
return currentAverage;
}
しかし、今では「」と同じようなエラーが発生しますExpression does not have a valid object type
。
私は明らかにこれを間違っています。これを正しく行う方法について何か提案はありますか?
解決
私はそのようにメソッドを書くことによってファイルをコンパイルすることができました:
-(double)average:(double)num, ...
{
va_list args;
va_start(args, num);
double currentAverage = num;
long long timesAveraged = 1;
for (NSNumber *arg = [NSNumber numberWithDouble:num]; arg != nil; arg = va_arg(args, NSNumber*))
{
currentAverage = ((currentAverage * timesAveraged) + [arg doubleValue]) / ++timesAveraged;
}
va_end(args);
return currentAverage;
}