Domino 9 und frühere Versionen > ND6: Entwicklung

Function mit mehreren Rückgabewerten

(1/2) > >>

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