不能在方法中使用局部变量

时间:2013-07-22 14:06:14

标签: iolanguage

我编写了以下方法来获取对象的所有插槽名称(没有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

为什么?

1 个答案:

答案 0 :(得分:1)

您的代码以发布方式运行我将其作为文件运行。通过添加一些显式分号,我能够在REPL中使用它:

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