我建立這個infix operator ^^
作爲替代使用pow
功能:Swift的POW()函數將不接受兼作參數
infix operator ^^ { associativity left precedence 155 }
func ^^ <T: IntegerLiteralConvertible>(left: T, right: T) -> T {
return pow(left as Double, right as Double)
}
我用IntegerLiteralConvertible
協議作爲用於泛型left
和right
類型約束,因爲從我的理解this diagramm表明,它基本上包含了所有的數字類型。
爲了使用pow
功能我不得不垂頭喪氣left
和right
到Double
雖然,這我沒有使用as
操作。這不是最安全的方法,但除此之外。
在實現功能this way迅速告訴我:
<stdin>:4:12: error: cannot invoke 'pow' with an argument list of type '(Double, Double)'
return pow(left as Double, right as Double)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
現在據我知道pow
需要兩個Double
S作爲參數,那麼,爲什麼抱怨嗎?
多數民衆贊成在類型安全再次感謝@馬丁R – 2015-02-24 19:10:17
http://stackoverflow.com/questions/26794282/how-do-i-make-my-operator-work-with-double-and-int – 2015-02-24 19:15:02
我上來了什麼-投票? – 2015-02-24 19:36:28