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' 的原因,即使它是所有方法都在幕后。
我不明白 [] 是 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' 的原因,即使它是所有方法都在幕后。