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

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...