Ruby 请解释一下这个方法
我有一个关于这种方法中的星星的问题:Ruby 请解释一下这个方法,ruby,inject,splat,Ruby,Inject,Splat,我有一个关于这种方法中的星星的问题: def multiplies_array(*numbers) numbers.inject(1, :*) end 参数列表中的星号(*numbers)是什么意思? 冒号(1,:*)后面的星号是什么意思?第一个星号是splat操作符。在这种情况下,它“收集”给定给乘\u数组的所有参数,并将其放入单个数组中 用四个参数这样调用它 multiplies_array 1, 2, 3, 4 。。。在方法中提供一个包含四个元素的数组 这相当于: def mult
def multiplies_array(*numbers)
numbers.inject(1, :*)
end
参数列表中的星号(*numbers
)是什么意思?
冒号(
1,:*
)后面的星号是什么意思?第一个星号是splat操作符。在这种情况下,它“收集”给定给乘\u数组的所有参数,并将其放入单个数组中
用四个参数这样调用它
multiplies_array 1, 2, 3, 4
。。。在方法中提供一个包含四个元素的数组
这相当于:
def multiplies_array(numbers) # Without splat operator
end
multiplies_array [1, 2, 3, 4]
第二颗星有点让人困惑。这里乘法运算符的含义是:
:
表示符号。所有可枚举的方法都允许将符号作为快捷方式传递。它的意思是:“使用此名称调用方法”
换句话说,*
方法应用于数字数组中的每个项目。如果没有符号快捷方式,则该行的外观如下所示:
numbers.inject(1) { |result, number| result * number) }
我希望这能让大家了解一下Ruby的魔力:)第一颗星是splat操作符。在这种情况下,它“收集”给定给乘\u数组的所有参数,并将其放入单个数组中
用四个参数这样调用它
multiplies_array 1, 2, 3, 4
。。。在方法中提供一个包含四个元素的数组
这相当于:
def multiplies_array(numbers) # Without splat operator
end
multiplies_array [1, 2, 3, 4]
第二颗星有点让人困惑。这里乘法运算符的含义是:
:
表示符号。所有可枚举的方法都允许将符号作为快捷方式传递。它的意思是:“使用此名称调用方法”
换句话说,*
方法应用于数字数组中的每个项目。如果没有符号快捷方式,则该行的外观如下所示:
numbers.inject(1) { |result, number| result * number) }
我希望这能为所有的Ruby魔法提供一点启示:)有关详细信息,请参阅文档
它“通过应用二进制操作组合枚举的所有元素,二进制操作由命名方法或运算符的块或符号指定。”
因此,:*
在数字中指定乘法运算符。inject(1,:*)
这个:*
将它指定为一个符号,但您也可以执行数字。inject(1,“*”)
。使用符号更为惯用。有关详细信息,请参阅文档
它“通过应用二进制操作组合枚举的所有元素,二进制操作由命名方法或运算符的块或符号指定。”
因此,:*
在数字中指定乘法运算符。inject(1,:*)
这个:*
将它指定为一个符号,但您也可以执行数字。inject(1,“*”)
。使用符号更为惯用。第一个是“splat操作符”,用谷歌搜索它。第二个是常规符号(阅读Enumerable#inject
上的文档。第一个是“splat操作符”,谷歌搜索它。第二个是常规符号(阅读Enumerable#inject
上的文档。另一个小问题。除非%w(和以上)。包括?(字符串[索引])什么是%w?@johnogy将其作为一个不同的问题发布。什么是%w
?另一个小问题。除非%w(和以上)。包含?(字符串[索引])什么是%w?@johnogy将其作为一个不同的问题发布。什么是%w
?