Question

Je parcourais (avec Squeak) la série À la découverte d'un meilleur code: Bowling pour Smalltalk . par Ron Jeffries et je ne peux pas passer par le troisième article .

Une nouvelle classe (appelée Frame) est en cours de création. Elle prend un tableau comme argument du constructeur.

Frame class>>new: anArray
  ^self new setRolls: anArray

Frame>>setRolls: anArray
  rolls := anArray

Lorsque j'essaie de l'exécuter dans un test simple:

testFrame
  | frame rolls |
  rolls := Array with: 5 with: 4.
  frame := Frame new: rolls.

J'obtiens l'erreur suivante:

texte alternatif http://files.getdropbox.com/u/120566 /junk/error.png

Comment dois-je modifier le message #new pour pouvoir initialiser l'objet Frame avec un tableau?

Était-ce utile?

La solution

Je suppose que vous n’avez pas réussi à ajouter la méthode new: correctement à la classe Frame. Êtes-vous sûr de le placer du côté de la classe (classe Frame) et non du côté de l'instance (Frame)? Pour ce faire, cliquez sur le bouton 'classe' avant d'ajouter votre méthode new:.

Autres conseils

Vous ne voulez vraiment pas remplacer new: ici. new: est traditionnellement réservé à "Créer un article de cette taille", et cela ne me surprend pas qu'il explose.

Un nom plus traditionnel pour le type de constructeur que vous souhaitez utiliser est fromArray: , ou peut-être même fromCollection: , qui aurait probablement fonctionné comme vous le souhaitiez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top