我知道Obj-c是一种编译语言,不提供任何类似python或ruby的评估功能,但是我需要一些动态功能,而且我无法在两种不同的方法之间做出决定。
问题:您有一个描述复杂数学公式的字符串,例如
@"var_a + 4 - (3 * var_b)"
我已经有一种方法可以评估当前值var_a
,var_b
因此,第一步就可以了。第二步是计算公式,我们至少有两个不同的选择:
SUM_Object
,该对象接受两个不同的操作数并返回两个参数的总和(依此类推……例如除法等)。我认为第二点是最好的解决方案。
谢谢。
为什么不使用NSExpression
?http://nshipster.com/nsexpression/
更新:
您将需要这样的东西
int a = 1, b = 2;
NSExpression *expression = [NSExpression expressionWithFormat:@"%i + 4 - (3 * %i)", a, b];
id value = [expression expressionValueWithObject:nil context:nil];
UPDATE2:
<, >, ==, !=, >=, <=
在NSExpression中无法使用。但是你可以使用NSPredicate
int a = 1, b = 2;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%i > %i", a, b];
BOOL result = [predicate evaluateWithObject:nil];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句