2016-07-25 1 views

Répondre

1

Ce que vous avez fait est de créer un nouvel emplacement à l'intérieur de la méthode et l'a nommé self. Ce qui signifie qu'il disparaît lorsque la méthode revient. Dans Io self n'est pas un mot-clé, il n'y a pas de mots-clés, et donc il n'a pas de signification particulière.

Ce que vous cherchez est d'utiliser une méthode qui modifie self. Puisque List est écrit en C, vous devez directement interfacer avec quelque chose écrit en C, ou avec quelque chose qui s'interface avec quelque chose écrit en C, pour effacer le contenu de la liste. Tenir compte:

myObject drop := method(
    self empty 
) 

Qu'est-ce qui se passe ici est la liste a une méthode nommée empty qui supprime tous les éléments et retourne l'objet maintenant vide. Il parle à une méthode de liste primitive appelée removeAll pour accomplir ceci.

Ceci est un peu coupé et sec cependant. Dans le cas général, dans d'autres circonstances, vous voudrez peut-être enregistrer l'élément que vous voulez retourner AVANT de le retirer de la collection. à savoir,

myCollection drop := method(
    result := self at(42) 
    self removeAllTheThings 
    result 
) 

Depuis pas tous les types de collection qui pourrait exister, aurait une méthode removeAll ou empty construit.