我需要帮助理解 Smalltalk 中变量的用法和差异。 下面给定代码中每个变量的区别和用法是什么?
Object subclass: #MyClass
instanceVariableNames: 'x'
classVariableNames: 'Yy'
poolDictionaries: ''
category: 'helpMe'
MyClass class
instanceVariableNames: 'zzz'
最佳答案
实例变量 (x
) 是实例的本地变量。该类或任何其他实例都无法访问该变量。
类变量 (Yy
) 是类、其所有实例、所有子类和所有子实例(即整个层次结构)的本地变量。任何子类或子实例都可以看到该变量的值。
类实例变量 (zzz
) 是类的本地变量。只有定义变量的类才能访问它,实例和子类都看不到该变量(尽 pipe 类继承了变量的声明,但它们的变量将具有不同的值)。
类也是 Smalltalk 中的对象。因此,您可以像考虑实例变量一样来考虑类实例变量:没有其他实例(类的实例)可以看到该值。感谢@Amos M. Carpenter 指出了这一点。
关于smalltalk - Smalltalk 中的变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967183/