classVariableNames和#x27';和实例变量名称:'';在Pharo Smalltalk中设置单身汉时?
一个位于实例侧:classVariableNames和#x27';和实例变量名称:'';在Pharo Smalltalk中设置单身汉时?,smalltalk,pharo,Smalltalk,Pharo,一个位于实例侧: Object subclass: #MyClass instanceVariableNames: '' classVariableNames: '' category: 'MyApp' 另一个可在类侧访问: MyClass class instanceVariableNames: '' 我到处都能找到一些信息 在这里找到了一个很好的解释,粘贴了几行以供参考。人们应该阅读整个专栏。 使用类变量的类可以通过几个 编码约定。这些编码约定使创建更容
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
category: 'MyApp'
另一个可在类侧访问:
MyClass class
instanceVariableNames: ''
我到处都能找到一些信息 在这里找到了一个很好的解释,粘贴了几行以供参考。人们应该阅读整个专栏。 使用类变量的类可以通过几个 编码约定。这些编码约定使创建更容易 子类。有时开发人员不恰当地使用类变量。 不恰当地使用类变量会导致类 很难分类。通常,对于 特别的问题是类实例变量而不是类 变数 什么是类变量?班级可以有 •等级 变量,以及 •类实例变量 类变量是 通过引用的名称从实例和类方法引用 类变量。任何方法,无论是类方法还是实例 方法可以引用类变量
当您创建一个新类(例如笔)时,您将创建一个元类实例的类(这将是笔类),并且您将能够获得笔类实例的笔实例 你可以有很多笔,但你只有一个笔类 实例变量是一个实例的变量。每个实例都有自己的变量。每支笔都可以有自己的颜色 类变量是类对象(笔类)的变量。由于Pen类只有一个实例,所以此变量只有一个值。如果您的笔有一个类变量#DefaultColor,
myPenInstance类DefaultColor
将为所有笔实例返回相同的值
最后,类端的实例变量用作实例端的实例变量,但不适用于类
类端的类变量和实例变量之间的区别在于,类变量对于类及其子类是唯一的,而类端的实例变量对于每个子类都是特定的
如果您有一个UniqueInstance类变量,该变量在笔中存储一个带有访问器的单例,Pen UniqueInstance
和PenSubclass UniqueInstance
将返回唯一的笔实例
如果对类端的实例变量执行相同的操作,
Pen uniqueInstance
将返回Pen uniqueInstance,而PenSubclass uniqueInstance
将返回PenSubclass uniqueInstance。可能重复我正在寻找关于旧语法如何对应于新语法的解释。你能看看我下面的答案吗?池字典和类实例变量是不同的概念。PoolDictionary是一个全局字典,其关联name->value
bindname
到value
在使用池的任何类的范围内。类实例变量只是元类级别的实例变量。单例类的正确用法是什么:类变量(我见过用于此目的的)还是类端实例变量?我尽量少用单例,我没有看到需要单例类层次结构的情况。所以我在类变量中使用它。