我正在尝试创建一个函数来计算一组数字的平均值、最大值、最小值和标准差。
我希望它能像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"。
请你教我如何写这两个函数好吗。从那里我就能解决剩下的问题。
感谢
- (void)passByRefMethod:(float *)ptr
{
*ptr = MYVALUE;
}
抱歉格式化,在电话中键入。希望这能有所帮助!
这种技术通常被称为pass-by-reference,它是C的一部分,因此您可以使用它来搜索更多信息。
您的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.