LANGAGE:Lumière sur le style de programmation Smalltalk.
Une caractéristique surprenante de Smalltalk est l'absence totale
d'instructions de contrôle intégrées au langage : if-then-else, for,
while, etc. Toutes ces instructions sont implémentées en utilisant des
objets. Par exemple, les décisions sont prises en envoyant un message
ifTrue à un objet Booléen, et en passant un fragment de code à exécuter
si le Booléen est vrai. Le seul aspect intégré par défaut est la syntaxe
pour envoyer un message à un objet.
L'exemple suivant illustre le style de programmation Smalltalk. L'exécution de ce code permet de trouver les voyelles dans une chaîne. Le | déclare les variables, : déclare les paramètres :
L'exemple suivant illustre le style de programmation Smalltalk. L'exécution de ce code permet de trouver les voyelles dans une chaîne. Le | déclare les variables, : déclare les paramètres :
| aString vowels | aString := 'This is a string'. vowels := aString select: [:aCharacter
| aCharacter isVowel].
À la dernière ligne, la chaîne aString reçoit un message select: avec un
bloc de code en argument. Voici le code de la super-classe Collection
qui fait le travail :| newCollection | newCollection := self species new. self do: [:each | (aBlock value: each) ifTrue: [newCollection add: each]]. newCollectionCe code répond au message en itérant au travers de ses membres (c'est la methode do:) en évaluant le code aBlock à chaque caractère ; aBlock (aCharacter isVowel) une fois évalué crée un booléen, qui est alors envoyé à ifTrue:. Si le booléen est vrai, alors le caractère est ajouté à la chaîne qui sera retourné. Comme select est défini dans la classe abstraite Collection, on pourrait également l'utiliser de cette façon :
| rectangles aPoint| rectangles := OrderedCollection . with: (Rectangle left: 0 right:
10 top: 100 bottom: 200) with: (Rectangle left: 10 right:
10 top: 110 bottom: 210). aPoint := Point x: 20 y: 20. collisions := rectangles select:
[:aRect | aRect containsPoint: aPoint].BY TAATJENE
Comments