我刚刚使用系统浏览器在pharo中创建了自己的包(MyPackage)和类(MyClass)。 这就是它的外观。
Object subclass: #MyClass
instanceVariableNames: ''
classVariableNames: ''
category: 'MyPackage'
我理解术语子类和类别,没有得到其他两个术语的含义(instanceVariableNames,classVariableNames)。
答案 0 :(得分:6)
我的印象是这个问题已经被问及并得到了解答,但我无法找到它,可能是在邮件列表中。
实例变量只是实例的个人变量,因此您定义的类的每个实例都将拥有它自己的一组变量。
班级的实例变量。你可以定义当你切换到班级时,你会得到这样的代码:
MyClass class
instanceVariableNames: ''
在Pharo(和一般的Smalltalks)中,每个类都是元类的一个实例。变量可以通过类方法访问,并且由于只有一个实例表示类对象,因此该实例只有一组这些变量。
类变量是classVariableNames: ''
在实例端模板上定义的变量。我喜欢称它们为#34;池变量",但实际上如果你定义了这样的变量,层次结构中的所有实例都能够访问它。我们假设您有一个班级A
及其子类B
。如果你有一个"类变量"在A
中,您可以从A
和B
的两个实例中访问相同的变量。它就像拥有层次结构的全局变量一样。我建议不要使用这种类型的变量。