2013-07-22 2 views
0

j'ai écrit méthode suivante pour obtenir tous les noms de sous d'objets (sans fentes du Lobby et highter):Impossible d'utiliser la variable locale dans la méthode

Object allSlotNames := method(
    result := list() 
    object := self 
    while(object != Lobby, 
     result appendSeq(object slotNames) 
     object := object proto 
    ) 
    result 
) 

Mais quand je le lance je reçois une erreur:

Io> 123 allSlotNames 

Exception: Number does not respond to 'object' 
--------- 
Number object      Command Line 1 
Number allSlotNames     Command Line 1 

Pourquoi?

Répondre

1

Votre code fonctionne comme posté Je l'ai couru comme un fichier. J'ai pu le faire fonctionner dans le REPL en ajoutant des points-virgules explicites:

Object allSlotNames := method(
    result := list(); 
    object := self; 
    while(object != Lobby, 
     result appendSeq(object slotNames); 
     object := object proto; 
    ); 
    result; 
) 
Questions connexes