我想要一个可以在两个值上使用加号运算符的泛型函数。
class funccalc {
func doAdd<T>(x:T,y:T) -> T {
return x + y
}
}
let a = funccalc()
println(a.doAdd(1, y: 4))
println(a.doAdd(23.54, y:200))
我在
return x + y
上收到错误我唯一的选择是遵循此答案中的建议:https://stackoverflow.com/a/24047239/67566,并创建自己的协议(protocol),因为
Int
和String
将定义运算符? 最佳答案
您是否尝试过使用AdditiveArithmetic
协议(protocol)?
https://developer.apple.com/documentation/swift/additivearithmetic
看起来就是您要找的东西。该协议(protocol)具有以下方法:static func + (Self, Self) -> Self
使用该协议(protocol),您的方法将变为:
class funccalc {
func doAdd<T: AdditiveArithmetic>(x:T,y:T) -> T {
return x + y
}
}