我是Smalltalk的初学者,目前正在和Pharo一起玩,我对子类消息中的选择感到好奇:关键字instanceVariableNames想要能够回答subStrings消息。我想知道为什么它不期望更像数组的结构,因为需要的是一组符号。
Object subclass: #Experiment instanceVariableNames: #(#foo #bar).
我唯一猜测的是一些历史原因:也许不是所有的Smalltalks都有数组或者它们的语法有很大不同,因为它们作为子类插入到内部消息中。还有其他解释吗?
答案 0 :(得分:3)
在Pharo愿景文档中,其中一个要点是改变它并拥有实例变量的真实概念。如果您有兴趣,请查看以下链接:
答案 1 :(得分:2)
是的,有点奇怪。我认为主要原因是它需要名称,因此在类创建时编译器会解析字符串并将名称作为子字符串,而且您不需要检查是否有人通过了带有数字或其他数组的数组。
对于阵列本身,它存在于Smalltalk-80规范中,所以它们很常见。 (而不是在Squeak中引入的动态数组{ expr1 . expr2 . expr3}
。
还有很多奇怪的事情。例如,现在Pharo使用 Parser ,它是 Scanner 的子类......你很快就会改变。