【问题标题】:Can you evaluate a string in Swift?你能在 Swift 中计算一个字符串吗?
【发布时间】:2015-03-11 00:34:43
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift string expression-evaluation


    【解决方案1】:

    没有。

    在 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
    

    【讨论】:

    • 这确实会在您执行 mod 操作时崩溃。 10%20 它会崩溃。
    • 我正在尝试将其用于公式,但是当我除以乘法和幂时,它给了我一个与正确结果不对应的奇怪数字
    • 我的问题与逗号格式有关,更改后一切正常。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2011-04-30
      • 2021-09-13
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多