我正在尝试返回结果类型为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中执行此类操作并使上面的代码有效?
答案 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