在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.
"


以上是在PharoSmalltalk中初始化类变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>