泛型 – 在Swift中,如何将函数泛化为理解T T的类型

前端之家收集整理的这篇文章主要介绍了泛型 – 在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))

我在返回x y时收到错误

我唯一的选择是遵循这个答案中的建议:https://stackoverflow.com/a/24047239/67566,并创建我自己的协议作为Int和String将定义运算符?

你应该按照建议的答案去做.创建一个供您使用的协议,并扩展您要使用它的所有类.然后确保T在方法签名中实现该协议.

您不能使用“可添加”协议,因为swift中没有一个. swift库实际上为每个有效的加法操作创建了一个函数.按住Command键点击Int之类的内容,查看所有这些内容的定义.它看起来像这样:

//....
func +(lhs: Int8,rhs: Int8) -> Int8
func +(lhs: UInt16,rhs: UInt16) -> UInt16
func +(lhs: Int16,rhs: Int16) -> Int16
func +(lhs: UInt32,rhs: UInt32) -> UInt32
func +(lhs: Int32,rhs: Int32) -> Int32
//etc...

猜你在找的Swift相关文章