我想用来**
重载指数函数。如果我使用“^”之类的东西,我会工作,但 python 的做法是**
,我想将它与 Swift 一起使用。有什么办法吗?
错误:没有匹配运算符声明的运算符实现
@infix func ** (num: Double, power: Double) -> Double{
return pow(num, power)
}
println(8.0**3.0) // Does not work
我想用来**
重载指数函数。如果我使用“^”之类的东西,我会工作,但 python 的做法是**
,我想将它与 Swift 一起使用。有什么办法吗?
错误:没有匹配运算符声明的运算符实现
@infix func ** (num: Double, power: Double) -> Double{
return pow(num, power)
}
println(8.0**3.0) // Does not work
定义函数前需要先声明操作符,如下:
在斯威夫特 2 中:
import Darwin
infix operator ** {}
func ** (num: Double, power: Double) -> Double {
return pow(num, power)
}
println(8.0 ** 3.0) // works
在斯威夫特 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 个优先级,就像 << 和 >> 位移运算符一样。