我正在经历(使用Squeak)发现更好的代码:针对Smalltalk系列的保龄球作者:Ron Jeffries,我无法通过第三篇文章。

正在创建一个新类(称为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.

我收到以下错误:

alt text http://files.getdropbox.com/u/120566 /junk/error.png

如何修改#new消息以便能够使用数组初始化Frame对象?

有帮助吗?

解决方案

我猜你没有将new方法添加到Frame类中。你确定你把它放在班级(Frame类)而不是实例侧(Frame)吗?要执行此操作,请在添加新方法之前单击“课程”按钮:。

其他提示

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

你想要的那种构造函数的一个更传统的名称是 fromArray:,或者甚至是 fromCollection:,它可能已经按你的意愿工作了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top