Ruby编程中的默认对象(self)与作用域解析
在描述和讨论计算机程序时,我们常常会使用空间甚至拟人化的隐喻。比如,我们会说处于一个类定义中,或者从一个方法调用返回。程序运行时,上下文和方向会不断变化。理解Ruby程序中不同元素在特定上下文中的含义和作用,对于编写和理解代码至关重要。本文主要聚焦于Ruby编程中的两个核心主题:作用域和 self ,同时也会涉及方法访问规则以及顶级方法的相关内容。
1. 作用域与self的基本概念
在Ruby中,作用域规则决定了变量(主要是变量)的可见性。了解自己所处的作用域非常重要,这样才能明确变量的引用对象,避免与不同作用域中同名的变量混淆。
而 self 并非一个概念,而是一个对象。在程序运行过程中, self 会不断变化,但在每一个时刻,只有一个对象扮演 self 的角色。它就像是程序中的第一人称 “我”,如同多个人以第一人称叙述的书籍,“我” 的角色会不断转换。
2. 谁是self,以及在何处
要确定哪个对象是 self ,需要了解当前所处的上下文。实际上,需要关注的上下文并不多,主要包括顶级上下文(在进入任何其他上下文之前,如类定义)、类定义块、模块定义块和方法定义块。 self 由所处的上下文决定,具体规则如下表所示:
| 上下文 | 示例 | 哪个对象是self? |
| — | — | — |
| 程序顶级 | 任何其他块之外的代码 | main(内置的顶级默认对象) |
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



