仰望如何计算一些我碰到这个代码附带的阶乘:什么是“:*”(冒号星号)在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