你如何比较Swift中的泛型类型?

时间:2016-05-22 03:34:25

标签: swift

我是Swift开发的新手。我之前有过Java经验,我正在尝试比较两种泛型类型。在java中这可以用==来完成,但是当我尝试做同样的事情时我得到“二元运算符'=='不能应用于两个'T'操作数”

我的代码是:

    func contains(value: T) -> Bool {
    var current = head
    for _ in 1...count {
        if (current.item! == value) {
            return true
        }
        current = current.next!
    }
    return false

这是一个链表的方法。我尝试将方法标题设为,但它仍然不起作用。

func contains<T: Equatable>(value: T) ->

我是Swift的新手,所以有人可以帮忙解释我如何解决这个错误吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

请在Swift 4中找到可编译的代码

func contains<T: Equatable>(value1: T, value2: T){
if value1 == value2{
    print("Equal")
}
}

contains(value1: 1, value2: 1)

func newContains<T: Comparable>(value1: T, value2: T){
if value1 == value2{
    print("Equal")
}else if value1 > value2{
    print("Greater than")
}
}

newContains(value1: 2, value2: 1)

这是如何运作的?

我们知道,遵守协议意味着在该协议中实现所有必需的方法。可比协议已将所有比较方法作为必需参数,任何实现Comparable的类型都可以进行比较。

答案 1 :(得分:-1)

你可以施放类型

 as? (typeHere)

OR

 typeHere(value)

我可能会尝试创建一个变量并将类型转换为

var bob : typeHere?

然后使用

bob = value
有点难以帮助,只有我的两分钱