我想使用**
来重载指数函数。如果我使用像"^"这样的东西,我可以工作,但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个优先级,如<<