在下文中,变量_
(下划线)是Array
,foo == "foo"
和bar == "bar"
。
_, foo, bar = ["", "foo", "bar"]
_ # => ["", "foo", "bar"]
有人可以解释下划线的作用以及使用它的用途吗?
答案 0 :(得分:4)
在并行分配中,我们有时会做两件事:
_
)您可以重复使用下划线来表示您不关心的任何元素:
a, _, b, _, c = [1, 2, 3, 4, 5]
a # => 1
b # => 3
c # => 5
*
)要忽略多个元素,请使用单个星号 - 我将其称为'裸露的splat',因为它听起来有点不好用:
a, *, b = [1, 2, 3, 4, 5]
a # => 1
b # => 5
阅读此博文Destructuring assignment in Ruby以了解更多其他相关内容。
答案 1 :(得分:2)
Underscore只是您在那里进行的变量赋值的占位符。在你的情况下,它基本上意味着忽略数组中的第一个值。如果我们没有它,你会做这样的事情:
ignored, foo, bar = ["", "foo", "bar"]
=> ["", "foo", "bar"]
然后不要忽略任何事情。使用_
更好答案 2 :(得分:2)
它只是一个变量,与其他变量一样。您可以使用quux
或其他任何您喜欢的名称。
除了......您将收到有关名为quux
的未使用的局部变量的警告,而名称以_
开头的变量不会收到警告。这是一种约定的编码,使用_
作为您要忽略的变量的名称。