在此代码中:
arr.select.each_with_index { |_, i| i.even? }
管道下划线是什么意思?
答案 0 :(得分:7)
_
是一个变量名,就像其他变量名一样(例如i
)。 Ruby中的一个约定是当你不打算在以后使用该变量时使用_
作为变量名。
答案 1 :(得分:2)
在函数中,参数括在括号中:
def my_function(arg1, arg2)
..
end
在一个块中,您使用管道来包含参数:
arr.each_with_index{ |item, index| .. }
在这种情况下,变量名称选为块的第一个参数,为_
。
答案 2 :(得分:1)
您正在调用方法each_with_index
并将其传递给匿名函数(或“块”)。该块有两个参数:第一个表示数组中的项(或可枚举对象),第二个表示其索引(第一个元素为0,第二个元素为1,第三个元素为2,依此类推)。
在Ruby(以及其他一些语言)中分配名称_
是传统的说法,“我不打算使用它。”所以each_with_index { |_, i| ... }
表示“在这个块中,i
表示索引,我不关心元素本身所以我不给它起一个名字。”