0

オブジェクトのすべてのスロット名を取得するために、次のメソッドを作成しました (ロビー以降のスロットは除く)。

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

しかし、実行するとエラーが発生します:

Io> 123 allSlotNames

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

なんで?

4

1 に答える 1

1

あなたのコードは投稿されたとおりに機能し、ファイルとして実行しました。いくつかの明示的なセミコロンを追加することで、REPL で動作させることができました。

Object allSlotNames := method(
    result := list();
    object := self;
    while(object != Lobby,
        result appendSeq(object slotNames);
        object := object proto;
    );
    result;
)
于 2013-07-23T03:54:46.940 に答える