在 Eiffel 中返回 ITERABLE 类型
Returning ITERABLE type in Eiffel
我正在尝试 return 结果类型为 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 class是一个延迟的class(java中的抽象)并且无法创建延迟的class。您必须使用未延迟且继承自 ITERABLE class 的 class。请注意 ITERATION_CURSOR class 也被推迟。使用什么可以根据您在实施中的需要而改变。这是一个使用 LINKED_LIST:
的例子
obtain_key (v:V): ITERABLE[G]
local
my_list:LINKED_LIST[G]
do
create my_list.make
Result := my_list
end
我正在尝试 return 结果类型为 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 class是一个延迟的class(java中的抽象)并且无法创建延迟的class。您必须使用未延迟且继承自 ITERABLE class 的 class。请注意 ITERATION_CURSOR class 也被推迟。使用什么可以根据您在实施中的需要而改变。这是一个使用 LINKED_LIST:
的例子obtain_key (v:V): ITERABLE[G]
local
my_list:LINKED_LIST[G]
do
create my_list.make
Result := my_list
end