这适用于 Hash[...],这与 Hash::[...] 非常相似。但这在内部是如何工作的——有区别吗?而且,Klass[] 是否因为方法名称以特殊字符开头而起作用?我们可以有一个名为“test”的 self 方法,但我们绝对不能做 Klasstest。
帮助我了解它在 ruby 中的内部工作原理。
最佳答案
更正了 Jörg W Mittag 的建议
最一般的形式是:
receiver.method_name(arg)
当常量名称没有歧义时,上面的形式可以替换为:
receiver::method_name(arg)
您可以省略括号:
receiver::method_name arg
receiver.method_name arg
对于符合特定模式的方法名称,有语法糖允许使用其他方式编写。
如果方法名是
==
,!=
,<
,>
,<=
,>=
,<=>
,===
,**
,*
,/
,+
, 或-
, 那么你可以写receiver method_name arg
如果方法名是
some_attribute=
, 那么你可以写receiver.some_attribute = arg
如果方法名是
[]
, 那么你可以写receiver[arg]
有一个特殊的模式。如果方法名称是 some_prefix@
, 那么唯一的写法就是
some_prefixreceiver
关于ruby - 在 ruby 中调用 Klass::[] 和 Klass[] 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154099/