簡體   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