0

所以我有一个字符串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
4

1 回答 1

0

我想到了。

对于任何需要这个的人 - 您可以使用任何字符串并使用:

functionName(x)对于大多数功能,如sqrt, multiplyby, trunc, ceiling, 等

然后对于具有多个变量的六个(max, min, count, average,sum和另一个我忘记了),您使用functionName({x,y}).

所有都可以在一个字符串中使用expressionValue(with: nil, context: nil)

于 2017-11-21T03:26:05.930 回答