【问题标题】:Swift 4 NSExpression with Multiple Functions具有多种功能的 Swift 4 NSExpression
【发布时间】:2017-11-21 11:26:05
【问题描述】:

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

【问题讨论】:

    标签: swift nspredicate nsexpression


    【解决方案1】:

    我想通了。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 2018-04-22
      • 2017-11-24
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多