在這裏學習Ruby,這是我第一次進入OOP,下面是我完成的一個哈希類的代碼。我無法理解union
方法中幕後發生的情況。當我將self.to_a.each { |key| joined_set.insert(key) }
更改爲@store.to_a.each { |key| joined_set.insert(key) }
時,散列joined_set
成爲一個包含鍵和值@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