我知道Obj-c是一种编译语言,不像python或ruby那样提供任何早期的趣味性,但我需要一些动态功能,我无法在两种不同的方式之间做出决定。
问题是:您有一个描述复杂数学公式的字符串,如
@"var_a + 4 - (3 * var_b)"
我已经有了一种从var_a和var_b中评估当前值的方法,所以第一步是可以的。第二步是评估公式,我们至少有两个不同的选项:
SUM_Object,它接受两个不同的操作数,并返回两个参数的和(例如,on...like除法等等)。我认为第二点是最好的solution....any建议?
谢谢。
发布于 2014-02-25 22:51:57
为什么不使用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];发布于 2014-06-30 08:27:54
如果您需要解析/评估高级数学表达式,请查看DDMathParser。我们还可以轻松地添加自己的表达式。
来自维基的示例
NSLog(@"%@", [@"1 + 2" numberByEvaluatingString]);更新:
正如您在项目的wiki中在操作员页上看到的那样,它还支持逻辑运算符。
https://stackoverflow.com/questions/22027893
复制相似问题