下面的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)
我怎样才能成功?有什么想法吗?