我想有一个泛型函数,可以在两个值上使用加号运算符.
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在方法签名中实现该协议.
原文链接:https://www.f2er.com/swift/319519.html您不能使用“可添加”协议,因为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...