如何使用@infix func **()为指数使用**



我想使用**来重载指数函数。如果我使用像"^"这样的东西,我可以工作,但python的方法是**,我想在Swift中使用它。有办法吗?

错误:操作符实现没有匹配操作符声明

@infix func ** (num: Double, power: Double) -> Double{
    return pow(num, power)
}
println(8.0**3.0) // Does not work

需要在定义函数之前声明操作符,如下所示:

在Swift 2:

import Darwin
infix operator ** {}
func ** (num: Double, power: Double) -> Double {
    return pow(num, power)
}
println(8.0 ** 3.0) // works

在Swift 3中:

import Darwin
infix operator **
func ** (num: Double, power: Double) -> Double {
    return pow(num, power)
}
print(8.0 ** 3.0) // works

为了确保**在相邻的*或/之前执行,您最好设置优先级。

infix operator ** { associativity left precedence 160 }

如http://nshipster.com/swift-operators/所示,幂运算符有160个优先级,如<<

相关内容

  • 没有找到相关文章

最新更新