8

我有一个变量,我有一个函数作为字符串存储在其中:

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

有没有办法评估字符串并运行函数?

4

2 回答 2

26

不。

对于 Swift ,eval()在 JavaScript 或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
于 2015-03-11T00:44:27.150 回答
0

是的,如果字符串包含布尔表达式,那么这也可以被评估。我做过这样的事情,

let stringWithMathematicalOperation: String = "true && false "
let exp: NSExpression = NSExpression(format: stringWithMathematicalOperation)
let result: Bool = exp.expressionValueWithObject(nil, context: nil) as Bool // Answer: false
于 2019-12-11T11:38:59.047 回答