[英]what is [] operator in Ruby
我不明白 [] 是 ruby 中的運算符。 我想知道如果[]
是一個運算符,那么這些括號{} & ()
。 這些也是運營商嗎?
我所知道的是,語言解析器使用這些符號來解釋/編譯代碼。
這取決於您是在談論數組文字還是用於從/向數組或散列獲取或分配值的括號。
作為文字, []
只是一個數組文字,是編寫Array.new
簡寫。 您還詢問了{}
,它是一個散列文字,即編寫Hash.new
簡寫。 括號不是文字(或“運算符”)——它們用於對事物進行分組。
作為用於獲取或分配值的“運算符”,正如其他人在評論中指出的那樣, []
與其他“運算符”並無特殊或概念上的不同。
同樣, 2 + 3
是寫2.+(3)
糖,寫array[0]
是寫array.[](0)
糖。
這樣做的原因是數組有一個字面上稱為[]
。 您可以通過獲取數組上的所有方法來找到它:
[].methods
# => long array including :[] (and also :[]=, by the way, for assignments)
請注意, [].methods
中的括號是數組文字,而不是“運算符”。
我沒有看過任何 Ruby 解釋器的實現,但我猜他們看到了類似array[0]
東西並將它轉換為array.[](0)
(或者至少他們這樣對待它)。 這就是為什么這種糖語法起作用並且看起來像“運算符”的原因,即使它是引擎蓋下的所有方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.