Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Fragensteller am 28.11.11 - 12:07:36

Titel: Default Werte bei Übergabe an eine Methode
Beitrag von: Fragensteller am 28.11.11 - 12:07:36
In sämlichen Sprachen ist es ja möglich parameter an eine Methode zu übergeben. Ist diese nicht gesetzt können default werte gesetzt werden.
Bei VBA war es so...

Code
Function FF(A As Long, Optional B As Long = 2) As Variant
    If B = 0 Then
        FF = CVErr(xlErrDiv0)
    Else
        FF = A / B
    End If
End Function

Wie funktioniert das ganze bei Lotus Script?
Konnte dazu noch nichts finden.

Schon mal Danke.

Titel: Re: Default Werte bei Übergabe an eine Methode
Beitrag von: koehlerbv am 28.11.11 - 12:15:27
Eine Schwäche von LotusScript: Optional gibt es nicht.
Titel: Re: Default Werte bei Übergabe an eine Methode
Beitrag von: Peter Klett am 28.11.11 - 13:16:09
Wenn ich solch eine Variabilität benötige, definiere ich für den "optionalen" Parameter einen Wert, der dann intern in der Routine mit dem Defaultwert übersetzt wird (z.B. wenn leer, dann Default). Der Parameter muss natürlich übergeben werden (bei erwarteten positiven Zahlen könnte ich einen negativen Wert dazu nutzen, um den Defaultwert anzusprechen).

Wenn es ganz flexibel sein soll, nehme ich nur einen Parameter (Variant) und übergebe eine Liste. Innerhalb der Routine kann ich dann das Vorhandensein von Parametern überprüfen.

z.B.

Dim liste List As String
liste ("Ort") = "Oslo"
liste ("Strasse") = "Karl Johans gate"
liste ("Hausnummer") = "1"

Call MeineFunktion (liste)

...

Sub MeineFunktion (liste As Variant)
   If Iselement (liste ("Ort")) Then
      -> Ort verwenden
   Else
      -> Defaultwert für Ort
...
 
Titel: Re: Default Werte bei Übergabe an eine Methode
Beitrag von: Fragensteller am 28.11.11 - 14:08:39
Wenn ich solch eine Variabilität benötige, definiere ich für den "optionalen" Parameter einen Wert, der dann intern in der Routine mit dem Defaultwert übersetzt wird (z.B. wenn leer, dann Default). Der Parameter muss natürlich übergeben werden (bei erwarteten positiven Zahlen könnte ich einen negativen Wert dazu nutzen, um den Defaultwert anzusprechen).

Wenn es ganz flexibel sein soll, nehme ich nur einen Parameter (Variant) und übergebe eine Liste. Innerhalb der Routine kann ich dann das Vorhandensein von Parametern überprüfen.

z.B.

Dim liste List As String
liste ("Ort") = "Oslo"
liste ("Strasse") = "Karl Johans gate"
liste ("Hausnummer") = "1"

Call MeineFunktion (liste)

...

Sub MeineFunktion (liste As Variant)
   If Iselement (liste ("Ort")) Then
      -> Ort verwenden
   Else
      -> Defaultwert für Ort
...
 

Das ne gute Idee...
Leere Parameter wolle ich vermeiden.