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
}
私はあなたがちょうどあなたのNodeクラスが準拠するために必要なノードの比較
func ==(lhs: Node, rhs: Node) -> Bool {
return lhs.count == rhs.count
}
func ==(lhs: Any, rhs: Any) -> Bool {
return lhs == rhs
}
私は1つの問題に取り組んでいますが、これは素晴らしい回答です。私はプログラム内の伝統的な方法で '=='演算子を使用していますが、エラーが発生し続けます: "2進演算子== 'は、' Any 'および' Any? '型のオペランドには適用できません。 (別名 'protocol <>')。 – user3353890
たとえば、 "Node.item == item"を比較しようとする場合もあります。ここで私は今問題に取り組んでいるところです – user3353890
私はあなたをさらに助けることはできませんあなたは完全なコードを表示しない場合 –