我試圖在#inject
內使用while
循環。但是,最後的備忘錄在某些時候會變成零,我不明白爲什麼。這是我的例子(我用#each
的例子,是想說明預期的結果):#inject中的備忘錄如何工作?
class TestClass
BASE_ARRAY = [5, 1]
def test_method(value)
result = []
BASE_ARRAY.each do |item|
while item <= value
result << item
value -= item
end
end
result
end
def test_method_alternate(value)
BASE_ARRAY.inject do |memo, item|
while item <= value
p memo
# memo << item (if left, returns NoMethodError for nil Class)
value -= item
end
end
end
end
solution_one = TestClass.new.test_method(11)
p solution_one # => [5, 5, 1]
solution_two = TestClass.new.test_method_alternate(11)
p solution_two
# => []
[]
nil
如何累加器成爲nil
?
謝謝,@jonathan!關於'while'的返回值的'解釋'幫了我很大的忙,再加上'備忘錄',我不知道我必須這樣做。謝謝! – user3097405