1

私は(Squeakを使用して)Discovering Better Code:RonJeffriesによるSmalltalkシリーズのボウリングを行っていましたが、 3番目の記事を通過できません。

コンストラクターの引数として配列を受け取る新しいクラス(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.

次のエラーが発生します。

代替テキストhttp://files.getdropbox.com/u/120566/junk/error.png

配列でFrameオブジェクトを初期化できるように#newメッセージを変更するにはどうすればよいですか?

4

2 に答える 2

0

ここでオーバーライドする必要はありませんnew:new:伝統的に「この整数サイズのアイテムを作成する」ために予約されており、それがあなたを爆破しても驚かない.

fromArray:必要な種類のコンストラクターのより伝統的な名前はfromCollection:です。

于 2009-06-24T16:31:56.200 に答える