#inject
içinde while
döngüsünü kullanmaya çalışıyorum. Ancak, son not bir noktada sıfır olur ve nedenini anlamıyorum.#inject'deki not nasıl çalışır?
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
Nasıl akümülatör nil
haline gelir: İşte benim örnek (Sadece beklenen sonucu göstermek için örnek üzerinde #each
kullanın)?
Teşekkürler, @jonathan! 'While''in dönüş değeri hakkında açıklama 'artı', 'not' i geri getirdiğini bilmediğimi bilmeme yardımcı oldu. Teşekkürler! – user3097405