Domino 9 und frühere Versionen > ND6: Entwicklung
Function mit mehreren Rückgabewerten
Hedwig14:
Hallo zusammen,
ich habe eine Funktion, die mir innerhalb eines Scripts einen Wert zurückliefert.
Nun habe ich festgestellt, dass ich mehrere Rückgabewerte aus der Function benötige !
Ist es möglich,dass mir eine Funktion mehrere Rückgabewerte ausgibt ?
Wenn ja, wie deklariere ich diese und übergebe sie ins Script ?
Lieben Gruss
Hedwig14
klaussal:
Beispiel:
varRueckgabe = FillPosition(doc, docColl, 0, DialogBox)
Function FillPosition(doc As NotesDocument, docColl As NotesDocument, intPosition As Integer, DialogBox As String) As Variant
Thomas Schulte:
Klaus das ist richtig, löst aber das Problem dann nicht, wenn sie unterschiedliche Typen zurückgeben will.
Grundsätzlich sieht Notes das nämlich nicht vor. Du kannst globale Variablen deklarieren und diese in deiner Funktion setzen. Damit bekommst du das hin, hast aber das Problem, das du immer dann wenn du deine Funktion benutzen willst die globalen Variablen vorher sauber deklariert sein müssen.
Ein Ausweg aus diesem Dilemma ist die Benutzung von Listen. Damit kannst du unterschiedliche Typen (Notesdokument, Notesdatabase, String, Item usw.) in einer Variablen zusammenfassen und auf diese auch sauber über das Element der Liste zugreifen.
Deine Funktion würde so ausschauen:
Function Somename(Parameter1 as String, Parameter2 as Integer) as variant
dim InterneListe list as variant
Fülle deine Liste mit irgendwelchen Werten
InterneListe("Element1") = notesdocument
InterneListe("Element2") = "irgendwas"
InterneListe("Element3") = 790
.
.
Somename = InterneListe
end function
für den Aufruf musst du nur noch eine
Dim Rückgabeliste List as variant
definieren und deine Funktion mit
Rückgabeliste = SomeName(Parameter1, Parameter2)
aufrufen und kannst danach alle Elemente der Liste verarbeiten.
koehlerbv:
Ein anderes übliches Verfahren (was die meisten sowieso unbewusst dauernd einsetzen) ist, Variable by reference zu übergeben, sie innerhalb der function zu befüllen und anschliessend ausserhalb wieder abzufragen.
Bernhard
eknori:
Du kannst den Rückgabewert der Funktion auch als Klasse definieren
z.B.
Class TicketDetails
Public User As String
Public TicketNumber As String
Public Problem As String
Public Status As String
'... eine Ahnung was sonst noch
Public AssociatedTodo As ToDoCollection
End Class
...
Function GetTicketDetails ( TicketNumber as String ) As TicketDetails
...
dann kannst du auch unterschiedliche Typen zurüchgeben
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln