在swift中使用POP创建一个通用的添加函数()

时间:2016-05-11 20:16:56

标签: swift generics swift-protocols

更新: 这仅用于学习POP。我知道我们可以使用< +>运营商,但我想知道我错过了什么

我正在尝试创建一个swift泛型函数来添加两个元素: - 如果元素为数字,则只需添加它们。 - 如果元素是字符串,则连接它们。

这是我的代码:

protocol NumericType {
    func +(lhs: Self, rhs: Self) -> Self
}

extension Double : NumericType {}
extension Float  : NumericType {}
extension Int    : NumericType {}

protocol Addable {
    func addGenerically<T>(element1: T, element2: T) -> T
}

extension Addable where Self:NumericType {
    func addGenerically<T:NumericType>(element1: T, element2: T) -> T {
        return (element1) + (element2)
    }
}
// This throws error: inheritance from non protocol, non class type strings
extension Addable where Self:String {
    func addGenerically<T:String>(element1: T, element2: T) -> T {
        return (element1) + (element2)
    }
}


class MyVC: UIViewController{

override func viewDidLoad() {
    super.viewDidLoad()

    let n1 = Double(3.4)
    let n2 = Double(3.3)
    let n3 = Addable.addGenerically(n1, element2: n2)
}

任何想法如何完成并使用它?

0 个答案:

没有答案