Ruby中的":*"(冒号星)是什么意思?

Gra*_*mey 4 ruby

查看如何计算数字的阶乘,我遇到了这段代码:

(1..5).inject(:*) || 1 # => 120
Run Code Online (Sandbox Code Playgroud)

什么是(:*) || 1做什么?

它是如何比较这行代码(1..5).inject(1) { |x, y| x * y } # => 120,它使用.inject来实现类似的功能?

Mis*_*cha 15

冒号星本身并不代表Ruby中的任何东西.它只是一个符号,您可以将符号传递给inject可枚举的方法.该符号命名要在可枚举元素上使用的方法或运算符.

例如:

(1..5).inject(:*) #=> 1 * 2 * 3 * 4 * 5 = 120
(1..5).inject(:+) #=> 1 + 2 + 3 + 4 + 5 = 15
Run Code Online (Sandbox Code Playgroud)

|| 1部分表示if inject返回falsey值,1而是使用.(在你的例子中哪个永远不会发生.)