Swift 4个具有多个函数的NSExpression
Swift 4 NSExpression with Multiple Functions
所以我有一个字符串 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
我想通了。
对于任何需要这个的人 - 你可以使用任何字符串并使用:
functionName(x)
用于大多数函数,例如 sqrt
、multiplyby
、trunc
、ceiling
、等等
然后是具有多个变量的六个(max
、min
、count
、average
、sum
,另一个我忘记了)你使用 functionName({x,y})
.
All 可以在字符串中使用 expressionValue(with: nil, context: nil)
所以我有一个字符串 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
我想通了。
对于任何需要这个的人 - 你可以使用任何字符串并使用:
functionName(x)
用于大多数函数,例如 sqrt
、multiplyby
、trunc
、ceiling
、等等
然后是具有多个变量的六个(max
、min
、count
、average
、sum
,另一个我忘记了)你使用 functionName({x,y})
.
All 可以在字符串中使用 expressionValue(with: nil, context: nil)