Swift – 解决一个string中的math运算

只是一个简短的问题。 在Swift中可以解决下面的代码:

var a: String; a = "\(3*3)"; 

string中的算术运算将被解决。 但我不知道,为什么这种变化不起作用。

 var a: String; var b: String; b = "3*3"; a = "\(b)"; 

在这种情况下,var a中的算术运算将不会被parsing。 任何想法,为什么,如何,我可以开始工作。 有些事情会更容易,如果这将工作。 感谢您的回答。

在第二种情况下,你插入一个string,而不是一个算术expression式。 在你的例子中,它是你在编译时select的一个string,但是一般来说它可能是一个用户的string,或者从一个文件或通过web加载。 换句话说,在运行时, b可以包含一些任意的string。 编译器在运行时不可用来parsing任意string作为算术。

如果要在运行时将任意string评估为算术公式,则可以使用NSExpression 。 这是一个非常简单的例子:

 let expn = NSExpression(format:"3+3") println(expn.expressionValueWithObject(nil, context: nil)) // output: 6 

您也可以使用像DDMathParser这样的第三方库。

这不会被解决,因为这不是一个算术运算,这是一个string:

 "3*3" 

与此相同

 "String" 

你放入的所有东西"这是一个string。

第二个例子让你从常量,variables,文字和expression式的混合构造一个新的String值:

 "\(3*3)" 

这是可能的,因为string插值\()

你插入一个stringexpression式,并转换并创build预期的结果。