以下變量_
(下劃線)是Array
,foo == "foo"
和bar == "bar"
。並行分配中使用下劃線作爲變量
_, foo, bar = ["", "foo", "bar"]
_ # => ["", "foo", "bar"]
有人可以解釋下劃線是什麼以及它在哪裏有用嗎?
以下變量_
(下劃線)是Array
,foo == "foo"
和bar == "bar"
。並行分配中使用下劃線作爲變量
_, foo, bar = ["", "foo", "bar"]
_ # => ["", "foo", "bar"]
有人可以解釋下劃線是什麼以及它在哪裏有用嗎?
在平行分配,我們有時會做兩件事情:
_
)可以重用強調代表任何您不關心的元素:
a, _, b, _, c = [1, 2, 3, 4, 5]
a # => 1
b # => 3
C# => 5
*
)要忽略多個元素,使用單星號 - 我要叫它「裸圖示」爲不低於其更好的理由聽起來有點可笑:
a, *, b = [1, 2, 3, 4, 5]
a # => 1
b # => 5
閱讀這篇博客Destructuring assignment in Ruby知道更多其他相關的東西。
Underscore是您在此處進行變量分配的簡單佔位符。在你的情況下,它基本上意味着忽略數組中的第一個值。如果我們沒有它,你會這樣做:
ignored, foo, bar = ["", "foo", "bar"]
=> ["", "foo", "bar"]
然後不要忽略任何東西。這是更好的使用_
當使用'ruby -w'運行腳本時,腳本不會發出警告。 – steenslag
它只是一個像其他任何變量。你可以使用quux
或其他任何你喜歡的名字。
除了...你會得到一個關於未使用的局部變量quux
的警告,而名稱以_
開頭的變量不會收到警告。這是使用_
作爲要忽略的變量的名稱的約定編碼。
我不知道的警告事實。謝謝。 –
你可以[看看這個](http://stackoverflow.com/questions/21973537/operator-precedence-of-unary-operators)? –
in'IRB'這個竅門不起作用。在'IRB'中強調它最後是evulatet變量,但是在腳本中它是未使用的變量。這個工作與'IRB'和腳本不同。 –
@Monk_Code它正在爲我工作 – Simone
@simone請看完整的評論。 –