只是一个简短的问题。在Swift中可以解决以下代码:Swift - 解决字符串中的数学运算
var a: String;
a = "\(3*3)";
字符串中的算术运算将被解决。但我无法弄清楚,为什么这种变化不起作用。
var a: String;
var b: String;
b = "3*3";
a = "\(b)";
在这种情况下,var a中的算术运算将不会被解析。任何想法为什么以及如何我可以开始工作。如果这可行的话,有些事情会更容易。感谢您的回答。
只是一个简短的问题。在Swift中可以解决以下代码:Swift - 解决字符串中的数学运算
var a: String;
a = "\(3*3)";
字符串中的算术运算将被解决。但我无法弄清楚,为什么这种变化不起作用。
var a: String;
var b: String;
b = "3*3";
a = "\(b)";
在这种情况下,var a中的算术运算将不会被解析。任何想法为什么以及如何我可以开始工作。如果这可行的话,有些事情会更容易。感谢您的回答。
这不会解决,因为这不是一个算术运算,这是一个字符串:
"3*3"
与此相同,放在"
这是一个字符串
"String"
一切。
第二个例子让你从常量,变量,常量和表达式的混合构造一个新的字符串值:
"\(3*3)"
这是可能的,因为串插\()
你插入一个字符串表达式转换并创建预期结果。
在第二种情况下,您插入的是字符串,而不是算术表达式。在您的示例中,它是您在编译时选择的字符串,但通常它可能是来自用户的字符串,或者从文件或通过网络加载的字符串。换句话说,在运行时b
可能包含一些任意字符串。编译器在运行时不可用来将任意字符串解析为算术。
如果要在运行时将任意字符串评估为算术公式,可以使用NSExpression
。这里是一个非常简单的例子:
let expn = NSExpression(format:"3+3")
println(expn.expressionValueWithObject(nil, context: nil))
// output: 6
您也可以使用第三方库像DDMathParser
。