我試圖重新創建#select
方法。到目前爲止,我有陣列部分工作,但是當我嘗試在哈希上調用#my_select
時,我得到一個空的哈希。對於初學者,我不得不重新創建自己的`#each'方法。就是這樣。如何重新創建.select()?
module Enumerable
def my_each
i = 0
while i < self.size
yield(self[i])
i += 1
end
self
end
現在,這裏的#my_select
方法我創建:
def my_select
if self.instance_of?(Array)
ret = []
self.my_each do |item|
ret << item if yield(item)
end
ret
elsif self.instance_of?(Hash)
ret = {}
self.my_each do |key, value|
if yield(key,value)
ret[key] = value
end
end
ret
end
end
end
...我的輸入/輸出...
> h = { "a" => 100, "b" => 200, "c" => 300 }
> h.select { |k,v| k == "a"}
=> {"a"=>100}
> h.my_select { |k,v| k == "a"}
=> {}
請問您還可以顯示my_each方法嗎? – vidaica
我通過用'each'替換'my_each'來解決問題。因此'your_each'錯誤或拼寫錯誤'Enumerable'也可能是一個問題。 – oldergod
我得到了和@oldergod相同的結果。如果您想編輯您的問題以包含'my_each',我們可以看到問題是否存在。考慮使用'case self',然後'當Array','Hash'。 –