5

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

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

我对此的唯一猜测是一些历史原因:也许并非所有 Smalltalks 都有数组,或者它们的语法差异很大,无法作为子类进入内部消息。还有其他解释吗?

4

2 回答 2

3

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

于 2013-03-25T12:30:43.757 回答
2

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

至于数组本身,它存在于 Smalltalk-80 规范中,因此它们很常见。(不是在 Squeak 中引入的动态数组{ expr1 . expr2 . expr3}

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

于 2013-03-25T07:15:29.790 回答