如何创建一个通用类在那里我可以一个项目的获取大小(或计数),无论它是一个int,字符串,等等如何获取泛型类的大小(数量)?
class Node<T: Equatable> {
var item: T? = nil
var next: Node? = nil
init(item:T, node:Node?) {
self.item = item
self.next = node
}
var count:Int { <-------------- this is what I need to fix
return item.count
}
}
我想这样做,所以我可以比较的项目是这样的:
let one = Node<Int>(item:1, node:nil)
let two = Node<Int>(item:2, node:nil)
return one.count < two.count <--------- should return true
let str1 = Node<String>(item:"moose", node:nil)
let str2 = Node<String>(item:"cow", node:nil)
return str1.count < str2.count <------- should return false
更新 我运行到正常的比较的问题了。我得到错误,“二元运算符'=='不能应用于'Any'和'Any'类型的操作数。 (又名“协议<>”)”
func search(item:Any) -> Bool {
var current:Node? = self.head
var found = false
while current != nil && found != true {
if current?.item == item { <---------this is the error line
found = true
} else {
current = current?.next
}
}
return found
}
我试图实现自定义的‘==’操作,除了一个节点比较
func ==(lhs: Node, rhs: Node) -> Bool {
return lhs.count == rhs.count
}
func ==(lhs: Any, rhs: Any) -> Bool {
return lhs == rhs
}
这是一个很好的答案,虽然我遇到了一个问题。我在我的程序的其他地方以传统方式使用'=='运算符,并且不断收到错误:“二元运算符'=='不能应用于'Any'和'Any'类型的操作数。 (aka'protocol <>')。 – user3353890
例如,在某些情况下,我尝试比较“if Node.item == item”...这就是我现在遇到的问题 – user3353890
我不能帮助你进一步如果你不显示你的完整代码 –