Smalltalk 如何初始化类变量?
我知道对于一个实例变量,我所要做的就是把它放在实例端的initialise方法中,并为它指定一个默认值。但是对于类变量,我是如何做到这一点的呢?我试图在类端创建一个初始化方法,但它没有给我的变量一个默认值,所以我必须在我的一个方法中这样做Smalltalk 如何初始化类变量?,smalltalk,pharo,Smalltalk,Pharo,我知道对于一个实例变量,我所要做的就是把它放在实例端的initialise方法中,并为它指定一个默认值。但是对于类变量,我是如何做到这一点的呢?我试图在类端创建一个初始化方法,但它没有给我的变量一个默认值,所以我必须在我的一个方法中这样做 pythonString ifNil:[pythonString := ''] 但我不喜欢这种方法 我也发现这是squeak,同样我也不喜欢这种方法。有没有合适的方法可以做到这一点。在Python中,赋值的情况相当简单,为什么对Pharo来说它如此神秘 首先
pythonString ifNil:[pythonString := '']
但我不喜欢这种方法
我也发现这是squeak,同样我也不喜欢这种方法。有没有合适的方法可以做到这一点。在Python中,赋值的情况相当简单,为什么对Pharo来说它如此神秘 首先,我希望您讨论的是类对象的实例变量(而不是在实例端定义为“类变量”)
initialize
正在工作,但它正在实例创建时运行。当您定义initialize
方法时,实例(类对象)已经存在
因此,当您第一次定义类时,您应该自己运行它,例如,
YourClass initialize
,以后每次将类加载到系统中时,都应该对其进行初始化。否,我是指在实例侧定义的类变量Uko的答案对类的类变量和实例变量都适用。您应该在类端#initialize方法中编写初始化,并在第一次手动执行。Monticello将在将来加载您的代码时负责执行它。谢谢Damien和Uko,回答已接受并投票:)我是否需要从我的初始值设定项调用超级初始化
?注意,我的意思是超级初始化
而不是超类初始化
,这显然是错误的。