0
一個會如何改寫inject方法,但在Ruby中,基本上有重寫注射方法在紅寶石
(5..10).inject { |sum, n| sum + n } == (5..10).new_inject { |sum, n| sum + n }
評估爲true
。對不使用的method_missing ...
編輯:
按照要求,這是我到目前爲止有:
module Enumerable
def new_inject(&block)
if block_given?
a ||= self.first
self[1..-1].each do |s|
@result = block.call(a,s)
end
end
@result
end
end
對於總和明確,或更普遍?另外,你可以展示你到目前爲止的內容嗎? –
這只是一個練習?您正在嘗試重新創建注入而不使用注入?在你的代碼中,到目前爲止'[1 ..- 1]'將會放棄第一個元素,不知道這是否是你的意圖。只是普通的'每個'(不需要自己)就會遍歷整個範圍。 – numbers1311407
@ numbers1311407'[1 ..- 1]'不放棄最後一個元素,它排除第一個元素。 – dbenhur