我想创建一个可以接受两个参数的函数,并根据它应该执行二进制操作的输入类型(例如' int'简单的加法,对于字符串它应该连接等...)和返回结果。我得到的错误就像"二元运算符'+'不能应用于两个'T'操作数"以下方法
func commonAdd <T>(paramA:T,paramB:T)->T
答案 0 :(得分:3)
一种可能的方法。
您定义了Addable
协议。
protocol Addable {
func add(other:Self) -> Self
}
接下来,您可以通过这种方式定义功能
func commonAdd <T: Addable>(paramA:T,paramB:T) -> T {
return paramA.add(paramB)
}
接下来,您选择一个类型并使其符合Addable
extension Int: Addable {
func add(other: Int) -> Int {
return self + other
}
}
现在,您可以将您的功能与Int
一起使用。
commonAdd(1, paramB: 2) // 3
您应重复步骤3,以便在您的功能中使用每个类型Addable
。
答案 1 :(得分:-1)
要添加的通用函数(整数,双精度,字符串)
func add<T: Any >(itemA: T, itemB: T) -> T {
if itemA is Int && itemB is Int {
debugPrint("Int")
let intNum1 = itemA as! Int
let intNum2 = itemB as! Int
return intNum1 + intNum2 as! T
} else if itemA is Double && itemB is Double {
debugPrint("Double")
let doubleNum1 = itemA as! Double
let doubleNum2 = itemB as! Double
return doubleNum1 + doubleNum2 as! T
} else {
debugPrint("String")
let string1 = itemA as! String
let string2 = itemB as! String
return string1 + string2 as! T
}
}