具有多个函数的Swift 4 NSExpression

时间:2017-11-20 05:57:00

标签: swift nspredicate nsexpression

所以我有一个字符串formula,可以说是:

let testValue = 10
let formula = "(max(testValue - 20,0) * 14) + testValue - max(testValue - 20,0)"

我可以做简单的算术,乘法,除法,减法等,但是如何将Max函数组合到这个字符串中呢?

我原以为我必须将max更改为我可以子串的东西,然后将每个函数单独执行并循环遍历实例,但是有更好的方法还是这样做?与|@Max(x,y)|一样。

此外,是否有特定的语法,因为我找不到使用Max,Min,Sum,Avg等的任何示例 - 也许我只是不理解文档。

//Current way
extension String {
    var expression: NSExpression {
        return NSExpression(format: self)
    }
}

let results = formula.expression.expressionValue(with: nil, context: nil) as? Int

1 个答案:

答案 0 :(得分:0)

我明白了。

对于任何需要此功能的人 - 您可以使用任何字符串并使用:

大多数功能

functionName(x),例如sqrtmultiplybytruncceiling,等等

然后对于包含多个变量的六个变量(maxmincountaveragesum,另一个我忘记了)你使用functionName({x,y})

所有可以在expressionValue(with: nil, context: nil)

的字符串中使用