你能在Swift中评估一个字符串吗?

9

我有一个变量,其中存储了一个以字符串形式表示的函数:

var x = "func myFunction(y :Int) {println(y)}"

有没有一种方法可以评估字符串并运行函数?
2个回答

29

不行。

Swift 中没有 JavaScript 中的 eval() 或 Java 中的 ScriptEngine 相当的功能。

通常字符串求值用于数学表达式;如果您想要求值这些表达式,您可以使用 NSExpression.valueWithExpression(format: String)

let stringWithMathematicalOperation: String = "5*5" // Example
let exp: NSExpression = NSExpression(format: stringWithMathematicalOperation)
let result: Double = exp.expressionValue(with:nil, context: nil) as! Double // 25.0

当你执行模运算时,它会崩溃。10%20 它会崩溃。 - Anirudha Mahale
我正在尝试将其用于公式,但是当我进行除法、乘法和幂运算时,它给出了一个奇怪的数字,与正确的结果不符。 - IgniteCoders
我的问题与逗号格式有关,在更改它之后一切都运行良好。 - IgniteCoders

0

是的,如果字符串包含布尔表达式,那么也可以进行评估。我已经做过类似这样的事情了,

let stringWithMathematicalOperation: String = "true && false "
let exp: NSExpression = NSExpression(format: stringWithMathematicalOperation)
let result: Bool = exp.expressionValueWithObject(nil, context: nil) as Bool // Answer: false

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接