1

我正在阅读(使用 Squeak)发现更好的代码:Ron Jeffries 的 Smalltalk 系列保龄球,但我无法通过第三篇文章。

正在创建一个新类(称为 Frame),它在构造函数中将数组作为参数。

Frame class>>new: anArray
  ^self new setRolls: anArray

Frame>>setRolls: anArray
  rolls := anArray

当我尝试在一个简单的测试中运行它时:

testFrame
  | frame rolls |
  rolls := Array with: 5 with: 4.
  frame := Frame new: rolls.

我收到以下错误:

替代文字 http://files.getdropbox.com/u/120566/junk/error.png

我应该如何修改 #new 消息才能使用数组初始化 Frame 对象?

4

2 回答 2

3

我猜您未能将方法 new: 正确添加到 Frame 类。您确定将其放在类端(Frame class)而不是实例端(Frame)吗?为此,请在添加新方法之前单击“类”按钮:。

于 2009-06-19T12:28:42.787 回答
0

你真的不想在new:这里覆盖。 new:传统上是为“创建一个这个整数大小的项目”保留的,我并不惊讶它会在你身上爆炸。

您想要的构造函数的一个更传统的名称是fromArray:,或者甚至fromCollection:可能会按照您的意愿工作。

于 2009-06-24T16:31:56.200 回答