在Swift中,如何将函数一般性地限制为理解T + T的类型

詹姆斯·布莱克

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

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,并创建自己的协议作为IntString将定义操作?

比尼

您是否尝试过使用该协议AdditiveArithmetic

https://developer.apple.com/documentation/swift/additivearithmetic

看起来就是您要找的东西。该协议具有以下方法:

static func + (Self, Self) -> Self

使用该协议,您的方法将变为:

class funccalc {
    func doAdd<T: AdditiveArithmetic>(x:T,y:T) -> T {
        return x + y
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章