2017-10-27 1 views
0

habe ich eine Funktion mit post-Zustand wie folgt:abnehmbar Generika Generika in eiffel

checkValue (k: K): detachable V 
do 
... 
end 
ensure 
some_post_condition: 
    checkKey (Result) 

Und hier ist Prototyp "CheckKey":

checkKey (v: V): BOOLEAN 

Da "Ergebnis" ist Typ "abnehmbare V", und ich versuche, das als Parameter an "checkKey" übergeben, die nur Typ von "V" akzeptieren, aber nicht "abnehmbare V", daher kann es nicht kompilieren.

ist hier, was kompiliert Fehler sagen:

Argument name: v 
Argument position: 1 
Formal argument type: GeneriC#1 
Actual argument type: detachable GeneriC#1 

Wie kann ich Generika Generic abnehmbarer konvertieren?

Antwort

1

Es gibt mehrere Möglichkeiten:

  1. ändern die Art der checkValuedetachable V-V.
  2. Ändern Sie den Typ des Arguments checkKey von V zu detachable V.
  3. die Nachbedingung ändern

    • zu lesen, wenn Result immer

      angebracht werden soll
      result_attached: attached Result 
      some_post_condition: checkKey (Result) 
      
    • wenn Result abnehmbar sein kann (in diesem Fall gilt als gültig):

      some_post_condition: attached Result implies checkKey (Result)