smalltalk中的变量类型

2Bi*_*all 3 smalltalk squeak gnu-smalltalk

我需要帮助理解Smalltalk中变量的用法和差异.以下给定代码中每个变量的区别和用法是什么?

Object subclass: #MyClass
  instanceVariableNames: 'x'
  classVariableNames: 'Yy'
  poolDictionaries: ''
  category: 'helpMe'

MyClass class
  instanceVariableNames: 'zzz'
Run Code Online (Sandbox Code Playgroud)

Max*_*ske 10

实例变量(x)是实例的本地变量.类和任何其他实例都不能访问该变量.

类variable(Yy)是类的本地,所有实例,所有子类和所有子实例(因此整个层次结构).任何子类或子实例都可以看到该变量的值.

类实例变量(zzz)是类的本地变量.只有定义变量的类才能访问它,实例和子类都不能看到变量(尽管子类继承变量的声明,它们的变量将具有不同的值).类也是Smalltalk中的对象.因此,您可以像考虑实例变量一样考虑类实例变量:没有其他实例(类的实例)可以看到该值.感谢@Amos M. Carpenter指出这一点.

  • 你是对的.感谢您指出了这一点.我修改了我的答案,包括那个. (2认同)