2009-06-19 130 views
1

我正在经历(使用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对象?

回答

3

我想你添加新的方法失败:正确的框架类。你确定你把它放在类一侧(框架类),而不是在实例一侧(框架)?要做到这一点,请在添加新的方法之前点击“班级”按钮。

0

你真的不想在这里重写new:new:传统上被保留为“创建一个这种整数大小的项目”,它并没有让我感到惊讶,它炸毁了你。

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