Ruby 中的 [] 运算符是什么

what is [] operator in Ruby

我不明白 [] 是 ruby 中的运算符。我想知道如果 [] 是一个运算符那么这些括号 {} & () 是什么。这些也是运算符吗?

据我所知,这些符号被语言解析器用于 interpreting/compiling 代码。

这取决于您谈论的是数组字面量还是用于获取或分配值的括号 from/to 数组或散列。

作为字面量,[]只是一个数组字面量,shorthand写成Array.new。您还询问了 {},这是一个散列文字,即 shorthand 用于编写 Hash.new。括号是 不是 文字(或 'operators' 就此而言)——它们用于分组。

作为获取或分配值的 'operator',正如其他人在评论中指出的那样,[] 与其他 'operators'.[=24 并不特别或在概念上不同=]

同理2 + 3是写2.+(3)的糖,写array[0]是写array.[](0)的糖。

之所以可行,是因为数组有一个字面上称为 [] 的方法。您可以通过获取数组上的所有方法来找到它:

[].methods
# => long array including :[] (and also :[]=, by the way, for assignments)

注意[].methods中的方括号是数组字面量,不是而是'operator'.

我没有看过任何 Ruby 解释器的实现,但我猜他们看到类似 array[0] 的东西并将其转换为 array.[](0)(或者至少他们处理它本身)。这就是为什么这种糖语法有效并且看起来像 'operators' 的原因,即使它是所有方法都在幕后。