我有一个变量,其中存储了一个以字符串形式表示的函数:
var x = "func myFunction(y :Int) {println(y)}"
有没有一种方法可以评估字符串并运行函数?
我有一个变量,其中存储了一个以字符串形式表示的函数:
var x = "func myFunction(y :Int) {println(y)}"
不行。
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
是的,如果字符串包含布尔表达式,那么也可以进行评估。我已经做过类似这样的事情了,
let stringWithMathematicalOperation: String = "true && false "
let exp: NSExpression = NSExpression(format: stringWithMathematicalOperation)
let result: Bool = exp.expressionValueWithObject(nil, context: nil) as Bool // Answer: false