我想在
xcode中使用这样的公式制作一个客观的c数组.
> x 5
> x-5
> x / 5
> x * 5
所以我可以用arrayName [i]加载一个公式并给出x的值并得到答案.有没有办法做到这一点,如果是这样的话怎么样?
解决方法
您可以使用一系列块来实现此目的.每个块将接收参数x并返回一个值,计算您的一个函数.然后,您可以选择数组的任何位置并执行它.
它将是这样的:
typedef CGFloat (^MyFunction)(CGFloat); //using a typedef to ease the heavy Syntax of the blocks MyFunction function1 = ^CGFloat(CGFloat x){ return x + 5; }; MyFunction function2 = ^CGFloat(CGFloat x){ return x - 5; }; MyFunction function3 = ^CGFloat(CGFloat x){ return x / 5; }; MyFunction function4 = ^CGFloat(CGFloat x){ return x * 5; }; NSArray *functions = @[function1,function2,function3,function4];
现在您可以访问数组的任何位置,并执行所选的块,如下所示:
MyFunction myFunction = functions[3]; CGFloat test = myFunction(5); //test will hold 25,because the selected block is 'x * 5'
显然,你可以为数组的任何索引更改3.当然,您可以声明上述任何其他函数,并将它们添加到数组中.
我测试过,效果很好.希望它有所帮助.