繁体   English   中英

在Eiffel中返回ITERABLE类型

[英]Returning ITERABLE type in 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中做这种事情并使上面的代码起作用?

ITERABLE类是延迟类(在Java中为抽象类),因此无法创建延迟类。 您必须使用一个不延迟的类,该类继承自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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM