我正在学习Ruby并且刚刚遇到了方法的隐式接收器,例如当我在没有指定接收器的情况下调用方法normalize
时,它被隐式接收器解释为self.normalize
。
我的问题是,当有人正在阅读我的代码时,他们怎么能轻易地告诉normalize
是一个在隐式接收器上调用的方法而不是normalize = "normalize"
之类的变量?
在我看来,无论是方法调用normalize
还是变量normalize
,它们在代码中看起来都是相同的。
答案 0 :(得分:0)
当您使用=
时,就像在normalize = "normalize"
的示例中一样,它会为块设置一个本地变量 - 您需要显式添加self.
来分配属性。当你没有通过=
分配时,自我的明确接收者才会发挥作用。
另外,总结一下评论中的内容:
这里也有一个命名约定。使用动词表示方法(规范化)和变量名词(normalized_value)。
一个好的IDE,比如RubyMine,(甚至许多普通的编辑器)将使用语法高亮来进行视觉区分,但如果不立即显示或扫描前5行后,您的代码可能会遇到更大的问题