class Array
def sum(start = 0)
inject(start, &:+)
end
end
請解釋一下這段代碼的用法。 有輸入和輸出的測試用例會很有幫助。 謝謝。使用注入方法的Ruby代碼是做什麼的?
class Array
def sum(start = 0)
inject(start, &:+)
end
end
請解釋一下這段代碼的用法。 有輸入和輸出的測試用例會很有幫助。 謝謝。使用注入方法的Ruby代碼是做什麼的?
它總結了你陣列中的所有元素。 start
是添加了總和的值。例如對於數組foo = [1, 4]; foo.inject(10, &:+)
將返回15(10 + 1 + 4)。 &:+
告訴在數組中的每個元素上應該調用什麼操作; 這是一樣的,你會給你自己的回調例如
foo.inject(10) do |current_sum, current_element|
current_sum = current_sum + current_element #can be written current_sum += current_element
current_sum
end
明白了。謝謝。 – shreyanshd
FWIW'current_sum + current_element'是塊體中所有必需的。 –
你問別人爲你做功課嗎? – elc
不,我正在看一本書,看到這段代碼。作者沒有給出任何代碼的解釋。因此,這個問題! – shreyanshd
你有沒有讀過[注入文檔](http://ruby-doc.org/core-2.2.3/Enumerable.html#method-i-inject)並試用了代碼? – mikej