我是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的新手,所以有人可以帮忙解释我如何解决这个错误吗?
谢谢!
答案 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
有点难以帮助,只有我的两分钱