仰望如何計算一些我碰到這個代碼附帶的階乘:什麼是「:*」(冒號星號)在Ruby中是什麼意思?
(1..5).inject(:*) || 1 # => 120
什麼(:*) || 1
在做什麼?
它與此行代碼(1..5).inject(1) { |x, y| x * y } # => 120
相比如何,它使用.inject
來實現類似的功能?
仰望如何計算一些我碰到這個代碼附帶的階乘:什麼是「:*」(冒號星號)在Ruby中是什麼意思?
(1..5).inject(:*) || 1 # => 120
什麼(:*) || 1
在做什麼?
它與此行代碼(1..5).inject(1) { |x, y| x * y } # => 120
相比如何,它使用.inject
來實現類似的功能?
test.rb:
def do_stuff(binary_function)
2.send(binary_function, 3)
end
p do_stuff(:+)
p do_stuff(:*)
$紅寶石test.rb
如果您傳遞一個方法名稱作爲一個符號,它可以通過發送來調用。這就是注射和朋友正在做的事情。
關於||
部分,如果左側返回nil或false,lhs || 1
將返回1
您也可以將simmilar結構傳遞給其他方法,例如。地圖,每個...(1..5).map(&:to_s),你也可以閱讀關於to_proc方法 – Sebastian
@Mischa謝謝! –
@GrayKemmey歡迎您! – Mischa