4.1.1 la pseudo-variable nil

nil est la seule et unique instance de la classe UndefinedObject. C’est la valeur par défaut des variables d’instances. nil désigne l’absence de valeur explicite associée à un objet, autrement dit, c’est le nom de SMALLTALK pour la valeur indéfinie des autres langages de programmation. Nous avons rencontré nil comme indicateur de valeur indéfinie sur la page 94 quand la transmission Chien new parle nous avait livrée une erreur, puisque la variable d’instance nom n’avait pas encore reçu une valeur. Nous l’avons également rencontrée dans la définition de la méthode vocabulaire: à travers le sélecteur isNil (page 108) qui teste, justement, si une certaine variable d’instance est déjà liée à une valeur ou pas. C’est encore une des beautés de SMALLTALK: la méthode isNil est définie dans exactement deux classes de SQUEAK. Une fois dans la classe UndefinedObject comme
isNil  
   ^true
et une autre fois dans la classe ProtoObject comme
isNil  
   ^false


FIG. 4.1: Un extrait du début de l’arbre des classes Smalltalk avec les deux endroits où une méthode isNil est définie. La classe UndefinedObject ne possède aucune sous-classe


Ainsi l’objet nil, seule et unique instance de la classe UndefinedObject, répondra true, oui, si on le demande s’il est égale à nil. Tout autre objet répondra à cette même question par un retentissant false, non, à cette même question. En effet, tout objet différent de nil, n’étant pas une instance de la classe UndefinedObject, hérite de la méthode définie dans la classe racine de l’arbre d’héritage, ProtoObject (cf. Figure 4.1).