我正在尝试创建一个函数来计算一组数字的平均值,最大值,最小值和标准差。
我希望它像UIColor函数一样工作 - (void)getRed:green:blue:alpha。即传递四个浮点值,然后函数覆盖它们。
我正在努力为它找到合适的语法。
我的功能是......
- (void)calculateStatsAverage:(float)average
standardDeviation:(float)standardDeviation
minimum:(float)minimum
maximum:(float)maximum
{
//pseudo code
average = total / count;
minimum = min value;
etc...
//
}
我遇到的问题是重新获得价值。
如果我将函数更改为使用float *(这是UIColor函数的作用),那么我的计算不喜欢分配变量。
简化......
想象一下这些功能。第一个是从其他地方打来的。
- (void)runThisFunction
{
float someOutputValue = 0.0;
[self changeTheValue:someOutputValue];
NSLog(@"The value is %f", someOutputValue);
}
- (void)changeTheValue:(float)value
{
value = 10.0;
}
我希望这段代码输出“值为10.0”;但是现在我得到“价值是0.0”。
请告诉我如何编写这两个功能。从那里我将能够解决剩下的问题。
由于
答案 0 :(得分:2)
- (void)passByRefMethod:(float *)ptr
{
*ptr = MYVALUE;
}
抱歉格式化,在手机上输入。希望这有帮助!
这种技术通常被称为传递参考,它是C的一部分,因此您可以使用它来搜索更多信息。
答案 1 :(得分:0)
您的NSLog正在显示局部变量'someOutputValue'的值,该变量已被指定为0.0。
您的'changeTheValue'方法无效。
以下代码可能有所帮助,
- (void)runThisFunction
{
float someOutputValue = 0.0;
float resultOfCalc = [self calcTheValue:someOutputValue];
NSLog(@"The value is %f", resultOfCalc);
}
- (float) changeTheValue:(float)value // note that this method returns a float
{
float newValue;
// do whatever calc is appropriate, e.g.
newValue = value + 10.0;
return newValue; // pass back the result of calc
}
这将输出,
The value is 10.