我想要一个可以在两个值上使用加号运算符的泛型函数。

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),因为IntString将定义运算符?

最佳答案

您是否尝试过使用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
    }
}

08-16 14:32