在obj-c上添加动态评估

伊格内修斯C.

我知道Obj-c是一种编译语言,不提供任何类似python或ruby的评估功能,但是我需要一些动态功能,而且我无法在两种不同的方法之间做出决定。

问题:您有一个描述复杂数学公式的字符串,例如

@"var_a + 4 - (3 * var_b)"

我已经有一种方法可以评估当前值var_avar_b因此,第一步就可以了。第二步是计算公式,我们至少有两个不同的选择:

  1. 创建一个字符串,然后尝试使用javascript引擎进行评估(非常糟糕的主意)。
  2. 在对象obj-c中映射公式matematica的基本思想。我在说的是创建一个对象SUM_Object该对象接受两个不同的操作数并返回两个参数的总和(依此类推……例如除法等)。
  3. 使用DDMathParser。

我认为第二点是最好的解决方案。

谢谢。

伏特

为什么不使用NSExpressionhttp://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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章