0

我编写了以下方法来获取对象的所有插槽名称(没有 Lobby 和更高级别的插槽):

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 回答