120 什么是(:*) || 1 在做什么? 它与这行代码相比如何 (1..5).inject(-6ren">
gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:37 25 4
gpt4 key购买 nike

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

(1..5).inject(:*) || 1 # => 120

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

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

最佳答案

冒号星号本身在 Ruby 中没有任何意义。这只是一个 symbol你可以将一个符号传递给 inject可枚举的方法。该符号命名要在可枚举元素上使用的方法或运算符。

例如:

(1..5).inject(:*) #=> 1 * 2 * 3 * 4 * 5 = 120
(1..5).inject(:+) #=> 1 + 2 + 3 + 4 + 5 = 15

|| 1 部分意味着如果 inject 返回 falsey值,使用 1 代替。 (在您的示例中,这永远不会发生。)

关于ruby - ":*"(冒号星号)在 Ruby 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16579900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com