用数组初始化一个对象
问题描述:
我正在经历(使用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对象?
答
我想你添加新的方法失败:正确的框架类。你确定你把它放在类一侧(框架类),而不是在实例一侧(框架)?要做到这一点,请在添加新的方法之前点击“班级”按钮。
答
你真的不想在这里重写new:
。 new:
传统上被保留为“创建一个这种整数大小的项目”,它并没有让我感到惊讶,它炸毁了你。
您想要的构造函数的传统名称是fromArray:
,或者甚至可能是fromCollection:
,这可能会按照您的意愿工作。