在Eiffel

时间:2017-10-21 23:26:38

标签: iterable eiffel

我正在尝试返回结果类型为ITERABLE [K]。 我所知道的是Iterable继承自ITERATION_CURSOR,所以我做了下面的非工作代码,但它没有编译。

obtainKey (v: V): ITERABLE[G]
    local
        myCollection: ITERABLE [G]
        myCursor:ITERATION_CURSOR[G]
    do
        create {ITERABLE[G]} myCursor
        Result := myCursor

我的猜测是我必须做类似跟随的事情,如果是c ++或Java,

ITERATION_CURSOR myCursor = new ITERABLE;

我不知道。我的假设可能是错的。

如何在Eiffel中执行此类操作并使上面的代码有效?

1 个答案:

答案 0 :(得分:0)

ITERABLE类是一个延迟类(java中的abstract),无法创建延迟类。您必须使用不延迟且继承自ITERABLE类的类。请注意,ITERATION_CURSOR类也是延迟的。使用内容可能会根据您的实施需要而改变。以下是使用LINKED_LIST的示例:

obtain_key (v:V): ITERABLE[G]
    local
        my_list:LINKED_LIST[G]
    do
        create my_list.make
        Result := my_list
    end