【问题标题】:Execute a "prepared" math operation in Objective-C在 Objective-C 中执行“准备好的”数学运算
【发布时间】:2011-02-11 13:36:54
【问题描述】:
我想用某种准备好的公式进行数学运算,看起来像 tan(%f)*1000 或 %f+%f 其中 %f 必须被一个参数替换。
Objective-C 中有一个函数可以传递我的公式格式和执行这个准备好的操作所需的数字吗?
我希望问题描述可以理解,如果没有,请发表评论。
提前致谢。
编辑 1:到目前为止,感谢您的回答,但我正在寻找更有活力的东西。块和内联函数很棒,但是是静态的。我也明白,开箱即用可能很难实现。
【问题讨论】:
标签:
iphone
objective-c
ios-4.2
【解决方案2】:
没有什么可以做到这一点,但是你可以做的是将你的“格式”重写为一个函数,然后传递它需要的参数,更快更容易。
inline float add(float p_x,float p_y)
{ return p_x+p_y; }
内联是一个编译器功能,您可以使用它来加快速度。它将用编译时执行的代码替换函数调用。不过,这将导致更大的二进制文件。
【解决方案3】:
如果我正确理解您的问题,Objective-C 块非常适合。
typedef double (^CalcBlock)(double);
CalcBlock myBlock = ^(double input) {
return (tan(input) * 1000);
};
NSLog(@"Result: %f", myBlock(M_PI_2));
您可以将包含您的算法的块传递给其他对象或方法。