Swift:通用幂函数作为中缀运算符

时间:2015-07-16 21:36:24

标签: swift generics

以下是关于如何为Int数字添加幂运算符的原始问题的answer

infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(CGFloat(radix), CGFloat(power)))
}

如何对此进行概括以使其适用于DoubleFloatInt

1 个答案:

答案 0 :(得分:0)

你不能"概括"它。你必须分别为每种类型实现它。

如果你查看Swift标题,你会发现这正是Swift本身为+等内置运算符所做的。没有"一般" +功能;每种数字类型都有一个+函数。

因此:

infix operator ^^ { associativity left precedence 160 }
func ^^ (radix: Int, power: Int) -> Int {
    return Int(pow(CGFloat(radix), CGFloat(power)))
}
func ^^ (radix: Double, power: Double) -> Double {
    return Double(pow(CGFloat(radix), CGFloat(power)))
}
// ... and so on for as many types as you like ...