ここでRubyを学びます。これはOOPへの私の最初の試みであり、以下はハッシュクラスを作る私の完全なコードです。私はunion
メソッドで何が起こっているのか理解できない。 self.to_a.each { |key| joined_set.insert(key) }
を@store.to_a.each { |key| joined_set.insert(key) }
に変更すると、は@store
のキーと値を含む配列の配列になりますが、self
ではなく@store
だけを使用するとキーだけが含まれます。この相違はどのようにして生じるのですか?自己はインスタンス変数と等しくないのですか?自己はインスタンス変数と等しくないのですか?
class MyHashSet
def initialize
@store = {}
end
def insert(el)
@store[el] = true
end
def include?(el)
return true if @store[el]
false
end
def delete(el)
if @store[el]
@store.delete(el)
return true
else
return false
end
end
def to_a
@store.keys
end
def union(set2)
joined_set = self.class.new
self.to_a.each { |key| joined_set.insert(key) }
set2.to_a.each { |key| joined_set.insert(key) }
joined_set
end
end
あなたがハッシュを実装するためにRubyの 'hash'を使っているなら、あなたが不正行為をしているように思えます。どうして迷惑なの?なぜ、Rubyを使えばいいのか? – pjs
クラス自体の中でインスタンス変数とメソッドを参照するとき、 'self.'と言うのは冗長であることに注意してください。 'to_a'を直接呼び出すことができます。 – pjs
チュートリアル/クラスの一種を見ていると、これが私たちにしていることです。 – Jstuff