如何区分调用隐式接收器的方法和Ruby中的变量?

时间:2014-08-06 07:05:19

标签: ruby-on-rails ruby methods self

我正在学习Ruby并且刚刚遇到了方法的隐式接收器,例如当我在没有指定接收器的情况下调用方法normalize时,它被隐式接收器解释为self.normalize

我的问题是,当有人正在阅读我的代码时,他们怎么能轻易地告诉normalize是一个在隐式接收器上调用的方法而不是normalize = "normalize"之类的变量?

在我看来,无论是方法调用normalize还是变量normalize,它们在代码中看起来都是相同的。

1 个答案:

答案 0 :(得分:0)

当您使用=时,就像在normalize = "normalize"的示例中一样,它会为块设置一个本地变量 - 您需要显式添加self.来分配属性。当你没有通过=分配时,自我的明确接收者才会发挥作用。

另外,总结一下评论中的内容:

这里也有一个命名约定。使用动词表示方法(规范化)和变量名词(normalized_value)。

一个好的IDE,比如RubyMine,(甚至许多普通的编辑器)将使用语法高亮来进行视觉区分,但如果不立即显示或扫描前5行后,您的代码可能会遇到更大的问题