你能评估 Swift 中的字符串吗?
Can you evaluate a string in Swift?
我有一个变量,我有一个函数作为字符串存储在其中:
var x = "func myFunction(y :Int) {println(y)}"
有没有办法评估字符串和 运行 函数?
没有
对于 Swift,Java 中没有对应的 eval()
in JavaScript or 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
我有一个变量,我有一个函数作为字符串存储在其中:
var x = "func myFunction(y :Int) {println(y)}"
有没有办法评估字符串和 运行 函数?
没有
对于 Swift,Java 中没有对应的 eval()
in JavaScript or 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