2017-10-21 2 views
0

Ich versuche, Ergebnis Ergebnis ist ITERABLE [K]. Alles, was ich weiß, ist, dass Iterable von ITERATION_CURSOR erbt, so dass ich folgenden Code gemacht habe, aber nicht kompiliert.Rückgabe von ITERABLE Typ in Eiffel

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

Meine Vermutung ist, dass ich so etwas wie folgt zu tun haben, wenn es C++ oder Java,

ITERATION_CURSOR myCursor = new ITERABLE; 

Ich weiß nicht. Meine Annahme könnte falsch sein.

Wie kann ich so etwas in Eiffel machen und obigen Code arbeiten lassen?

+0

Es würde helfen, wenn Sie erklären würden, was Sie erreichen wollen, was der Zweck des Codes ist, was Sie davon erwarten. Es einfach "kompilieren" zu lassen ist nicht das Gleiche wie es "arbeiten" zu machen (in Ihren Begriffen). Insbesondere warum gibt es ein Argument "v", wie soll die Funktion "erhalten_key" verwendet werden usw.? –

Antwort

0

Die ITERABLE-Klasse ist eine aufgeschobene Klasse (Abstract in Java) und eine aufgeschobene Klasse kann nicht erstellt werden. Sie müssen eine Klasse verwenden, die nicht zurückgestellt ist und die von der Klasse ITERABLE erbt. Beachten Sie, dass die ITERATION_CURSOR-Klasse ebenfalls zurückgestellt wird. Was Sie verwenden können, hängt davon ab, was Sie in Ihrer Implementierung benötigen. Hier ein Beispiel mit einer LINKED_LIST:

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