微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

泛型 – 在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...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐