为什么instanceVariableNames是String而不是更结构化的集合

时间:2013-03-25 06:49:43

标签: smalltalk pharo

我是Smalltalk的初学者,目前正在和Pharo一起玩,我对子类消息中的选择感到好奇:关键字instanceVariableNames想要能够回答subStrings消息。我想知道为什么它不期望更像数组的结构,因为需要的是一组符号。

Object subclass: #Experiment instanceVariableNames: #(#foo #bar).

我唯一猜测的是一些历史原因:也许不是所有的Smalltalks都有数组或者它们的语法有很大不同,因为它们作为子类插入到内部消息中。还有其他解释吗?

2 个答案:

答案 0 :(得分:3)

在Pharo愿景文档中,其中一个要点是改变它并拥有实例变量的真实概念。如果您有兴趣,请查看以下链接:

答案 1 :(得分:2)

是的,有点奇怪。我认为主要原因是它需要名称,因此在类创建时编译器会解析字符串并将名称作为子字符串,而且您不需要检查是否有人通过了带有数字或其他数组的数组。

对于阵列本身,它存在于Smalltalk-80规范中,所以它们很常见。 (而不是在Squeak中引入的动态数组{ expr1 . expr2 . expr3}

还有很多奇怪的事情。例如,现在Pharo使用 Parser ,它是 Scanner 的子类......你很快就会改变。