在PharoSmalltalk中初始化类变量
我在 Pharo 中初始化类变量时遇到问题。我首先创建一个具有单个类变量的类:
Object subclass: #ClassVariableTestBehavior
instanceVariableNames: ''
classVariableNames: 'test'
package: 'DummyPackage'
然后在课堂上,我创建了initialize
一条消息并将变量设置为 nil。
ClassVariableTestBehavior class >>> initialize
test := nil
我保存然后创建了一个实例方法:
ClassVariableTestBehavior >>> test
^ test
并再次返回并将类方法更改为:
ClassVariableTestBehavior class >>> initialize
test := 34
然后在操场上,我打印了以下结果:
ClassVariableTestBehavior new test.
这是nil
. 为什么类变量的值没有更新为 34?
回答
该class>>initialize
方法仅在代码最初从外部文件加载时使用一次。它不会在每次编辑方法时运行。(如果您修改了评论,您是否希望数据被清除!?)事实上,该nil
值并非来自您的方法,而只是初始默认值。
一个常见的约定是用一行可以执行的代码向 initialize 方法添加注释。
"
ClassVariableTestBehavior initialize.
"