Tutorial
Überladen von Prozeduren und Operatoren (Overload)
von MOD | Seite 2 von 9 |
OverLoad hat aber auch einen kleinen Nachteil. Diesen möchte ich mal anhand einer Funktion aufzeigen, die einen zufälligen Wert eines bestimmten Datentyps zurückgeben soll:
Declare Function gibZahl OverLoad As Integer
Declare Function gibZahl As Double
'Zufallsgenerator initialisieren
Randomize Timer
Print gibZahl
Sleep
Function gibZahl As Integer
Return Int(Rnd * 1000)
End Function
Function gibZahl As Double
Return Rnd * 1000
End Function
Der Code wird aufgrund des Compilerfehlers, "Duplicated definition", einer mehrfachen Definition der Funktion 'gibZahl' nicht compilieren.
Grund dafür ist, dass eine überladene Funktion mindestens einen Übergabeparameter haben muss, der ihn von den anderen Funktionen unterscheidet.
Declare Function gibZahl OverLoad (x As Integer) As Integer
Declare Function gibZahl (x As Double) As Double
'Zufallsgenerator initialisieren
Randomize Timer
'Übergabe eines unnötigen "Pseudo-Parameters"
Print gibZahl(0.0)
Sleep
Function gibZahl (x As Integer) As Integer
Return Int(Rnd * 1000)
End Function
Function gibZahl (x As Double) As Double
Return Rnd * 1000
End Function
Dieser Code dagegen compiliert problemlos, da sich ja ein Parameter unterscheidet, auch wenn es nicht besonders schön gelöst ist.
Hinweis:
- wenn eine Funktion einen Parameter hat und die zweite keinen, ist das auch ein erlaubtes Konstrukt
- wenn eine Funktion mehr als einen Parameter hat, muss sich trotzdem nur ein Parameter unterscheiden
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|