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指出这一点.