pharo 中 "instance Variable Names" 和 "class Variable Names" 有什么区别?
What is the difference between "instance Variable Names" and "class Variable Names", in pharo?
我刚刚使用系统浏览器在 pharo 中创建了自己的包 (MyPackage) 和 class(MyClass)。
这是它的样子。
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
category: 'MyPackage'
我理解术语 subclass 和类别,但不明白其他两个术语(instanceVariableNames、classVariableNames)的含义。
我的印象是这个问题已经被提出并得到了回答,但我找不到它,可能它在邮件列表中。
实例变量 只是实例的个人变量,因此您定义的 class 的每个实例都将拥有自己的一组变量。
class端的实例变量。你可以定义当你切换到class这边时,你会看到这样的代码:
MyClass class
instanceVariableNames: ''
在 Pharo(和一般的 Smalltalks)中,每个 class 都是元 class 的一个实例。这些变量可以通过 class 端方法访问,并且由于只有一个实例表示 class 对象,因此该实例只有一组这些变量。
Class变量是实例端模板上classVariableNames: ''
定义的变量。我喜欢称它们为 "pool variables",但事实上,如果您定义了这样的变量,层次结构中的所有实例都将能够访问它。假设您有一个 class A
并且它是 subclass B
。如果 A
中有 "class variable",则可以从 A
和 B
的两个实例访问同一个变量。这就像有一个层次结构的全局变量。我建议不要使用这种类型的变量。
我刚刚使用系统浏览器在 pharo 中创建了自己的包 (MyPackage) 和 class(MyClass)。 这是它的样子。
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
category: 'MyPackage'
我理解术语 subclass 和类别,但不明白其他两个术语(instanceVariableNames、classVariableNames)的含义。
我的印象是这个问题已经被提出并得到了回答,但我找不到它,可能它在邮件列表中。
实例变量 只是实例的个人变量,因此您定义的 class 的每个实例都将拥有自己的一组变量。
class端的实例变量。你可以定义当你切换到class这边时,你会看到这样的代码:
MyClass class
instanceVariableNames: ''
在 Pharo(和一般的 Smalltalks)中,每个 class 都是元 class 的一个实例。这些变量可以通过 class 端方法访问,并且由于只有一个实例表示 class 对象,因此该实例只有一组这些变量。
Class变量是实例端模板上classVariableNames: ''
定义的变量。我喜欢称它们为 "pool variables",但事实上,如果您定义了这样的变量,层次结构中的所有实例都将能够访问它。假设您有一个 class A
并且它是 subclass B
。如果 A
中有 "class variable",则可以从 A
和 B
的两个实例访问同一个变量。这就像有一个层次结构的全局变量。我建议不要使用这种类型的变量。