5

在 smalltalk 中存在“工作区”环境。根据定义,“self”指向正在执行当前方法的对象。但是,当我在工作区窗口中键入代码片段时,我该如何理解“当前方法”?当前没有运行任何方法的对象,或者我错过了一些东西。有人可以帮忙吗?

4

2 回答 2

8

你可以调试你执行的代码,你会看到你最终在一个对象上执行了一个临时方法。例如,在 Pharo 中,工作区 DoIt 在 UndefinedObject (nil) 上创建一个方法。所以这里 self 指的是 nil。

于 2013-02-01T18:38:32.690 回答
4

试试这个实验:在工作区中输入“self”,选择它,然后从上下文菜单中选择“打印它”。这将向您展示 self 绑定到的对象。

在大多数 Smalltalks 中,self 将为 nil。

于 2013-02-01T20:33:57.477 回答