加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:32:26 所属栏目:百科 来源:网络整理
导读:我想有一个泛型函数,可以在两个值上使用加号运算符. class funccalc { func doAddT(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时收到错误 我唯一的选择是遵循这个答案中的建议:h
我想有一个泛型函数,可以在两个值上使用加号运算符.
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...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读