gpt4 book ai didi

ruby - 在 ruby​​ 中调用 Klass::[] 和 Klass[] 有区别吗?

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:00 24 4
gpt4 key购买 nike

这适用于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com