Smalltalk 在寻找“的含义时;“自我”;

Smalltalk 在寻找“的含义时;“自我”;,smalltalk,Smalltalk,smalltalk中存在“工作区”环境。根据定义,“self”指向当前方法正在其中执行的对象。但是,当我在工作区窗口中键入代码片段时,如何理解“当前方法”?当前没有运行任何方法的对象,或者我遗漏了一些内容。有人可以帮忙吗 您可以调试您执行的代码,您将看到您最终在一个对象上执行了一个临时方法。例如,在Pharo中,工作区DoIts在UndefinedObject(nil)上创建一个方法。所以这里self指的是nil。试试这个实验:在工作区中键入“self”,选择它,然后从上下文菜单中选择“prin

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

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

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


在大多数闲谈中,赛尔夫将是零

如果我在工作区窗口中键入一些文本并选择它,我猜Pharo会将其放入一个代码块中。当我点击“print it”时,它会将“value”消息发送到此代码段。现在“self”在代码块中,我们不知道该块将在哪个对象的哪个方法中执行。