使用数组初始化对象

时间:2009-06-19 09:00:16

标签: smalltalk squeak

我正在经历(使用Squeak)Ron Jeffries的Discovering Better Code: Bowling for Smalltalk Series,我无法通过third文章。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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