【发布时间】:2015-03-11 00:34:43
【问题描述】:
我有一个变量,我有一个以字符串形式存储在其中的函数:
var x = "func myFunction(y :Int) {println(y)}"
有没有办法评估字符串并运行函数?
【问题讨论】:
标签: swift string expression-evaluation
我有一个变量,我有一个以字符串形式存储在其中的函数:
var x = "func myFunction(y :Int) {println(y)}"
有没有办法评估字符串并运行函数?
【问题讨论】:
标签: swift string expression-evaluation
没有。
在 JavaScript 中没有等效的 eval() 或在 Java 中用于 Swift 的 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
【讨论】: