我建立这个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