swift - 通用加法函数 Swift

标签 swift generics

我想创建一个函数,它可以接受两个参数,并根据输入的类型执行二元运算(例如,“int”简单加法,对于字符串,它应该连接等)并返回结果。对于以下方法,我收到类似“二元运算符‘+’不能应用于两个‘T’操作数”的错误

func commonAdd <T>(paramA:T,paramB:T)->T

最佳答案

一种可能的方法。

1) 可添加协议(protocol)

您定义一个Addable 协议(protocol)。

protocol Addable {
    func add(other:Self) -> Self
}

2) commonAdd 函数

接下来你以这种方式定义你的功能

func commonAdd <T: Addable>(paramA:T,paramB:T) -> T {
    return paramA.add(paramB)
}

3) 使 Int 符合 Addable

接下来选择一个类型并使其符合Addable

extension Int: Addable {
    func add(other: Int) -> Int {
        return self + other
    }
}

4) 用法

现在您可以将您的函数与 Int 一起使用。

commonAdd(1, paramB: 2) // 3

更多

您应该重复第 3 步,使您希望在函数中使用的每个类型都成为 Addable

关于swift - 通用加法函数 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35429007/

相关文章:

swift - UIImageView 在 SWIFT 中的计数

当 UITextField.secureTextEntry 改变它的值时 Swift 得到回调

python - 如何在 Python 中为特定输入类型强制执行特定输出类型?

java - 具有自反依赖性的泛型类

Java 8 map 签名 : public<U> Optional<U> map(Function<? super T, ? extends U> mapper)--为什么有两个U?

java - 在 Java 中搜索两个 arrayList 索引之间的通用项

ios - 如何在 swift 中对 CoreData 的双属性求和

swift - 如何提取字典之间的差异?

ios - 如何将从 Firestore 下载的数据转换为数组并将其分配给我的 TableView ?

java - 当参数作为通用 ArrayList<?> 传递时如何添加