这适用于Hash [...],这与Hash :: [...]非常相似。但这如何在内部发挥作用 - 是否存在差异?而且,Klass []是否有效,因为方法名称以特殊字符开头?我们可以有一个名为“test”的自我方法,我们绝对不能做Klasstest。
帮助我了解这在ruby内部是如何工作的。
答案 0 :(得分:3)
更正了以下来自JörgWMittag的建议
最常见的形式是:
receiver.method_name(arg)
如果没有常量名称的歧义,则上面的表格可以替换为:
receiver::method_name(arg)
您可以省略括号:
receiver::method_name arg
receiver.method_name arg
对于适合某种模式的方法名称,有一种语法糖,允许其他方式编写。
如果方法名称为==
,!=
,<
,>
,<=
,>=
,{{1 }},<=>
,===
,**
,*
,/
或+
,然后就可以写了
-
如果方法名称为receiver method_name arg
,则可以编写
some_attribute=
如果方法名称为receiver.some_attribute = arg
,则可以编写
[]
有一种特殊的模式。如果方法名称为receiver[arg]
,则唯一的写入方式是
some_prefix@