题
我正在经历(使用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:
,它可能已经按你的意愿工作了。
不隶属于 StackOverflow