起初看起來很簡單。這是第一個代碼塊,我在幾分鐘內寫道:如何創建注入方法的自定義實現?
module Enumerable
def my_inject(memo=false)
memo = memo ? memo : self[0]
self.my_each do |item|
memo = yield(memo, item)
end
return memo
end
end
當注射方法被調用的初始值,它按預期工作。但我一直無法找到一種方法,使其正常工作沒有任何初始值。
例如:
puts [1,2,3,4].my_inject(0) { |memo, i| memo+i} #=> 10
puts [1,2,3,4].my_inject { |memo, i| memo+i} #=> 11
而這就是原來的Ruby注入方法輸出:
puts [1,2,3,4].inject { |memo, i| memo+i} #=> 10
Ruby的文檔說
如果你沒有明確指定的初始值對於備忘錄,則集合的第一個元素被用作備忘錄的初始值。
那麼如何爲初始值設置正確的數據類型呢?我們是否應該在Ruby中爲每種數據類型設置條件,併爲每種數據類型設置默認值?
感謝您的回答和解釋「假」的情況。你是對的。 – scaryguy