NSExpression中的自定义Swift运算符

时间:2017-11-13 10:29:59

标签: swift operators nsexception

下面的Swift代码给出10作为答案,但我希望有12.5。

zIndex

原因很简单就是整数除法。程序逻辑不允许我给出类似" 5 *(5.0 / 2)"的东西。因此,我提出了一个使用自定义Swift运算符的想法,例如var numericExpression = "5 * (5 / 2)" let expression = NSExpression(format: numericExpression) var result = expression.expressionValue(with: nil, context: nil) 来表示浮动点的投入。

^/^

用这样的替换

infix operator ^/^: MultiplicationPrecedence

extension Int {

    static func ^/^ (left: Int, right: Int) -> Double {

        return Double(left) / Double(right)
    }
}

extension Double {

    static func ^/^ (left: Double, right: Double) -> Double {

        return left / right
    }
}

extension NSNumber {

    static func ^/^ (left: NSNumber, right: NSNumber) -> NSNumber {

        return NSNumber(value: left.floatValue / right.floatValue)
    }
}

但结果是

let expression = NSExpression(format: "5 * (5 ^/^ 2)")
var result = expression.expressionValue(with: nil, context: nil)

我怎样才能成功?有什么想法吗?

0 个答案:

没有答案