Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Marinero Atlántico am 17.12.04 - 10:08:36

Titel: Array als Rückgabewert einer Funktion nicht erlaubt?
Beitrag von: Marinero Atlántico am 17.12.04 - 10:08:36
Hi,

meine LotusScript skills sind irgendwie doch ein wenig rostig geworden.
Warum kann ich in einer Funktion keinen Array zurückgeben?

Erst wollte ich den Array eines Types zurückgeben.
Code
 
Function buildMappingCommands (dbCur As NotesDatabase) As ACommand()

Muss ich dann in Variant umändern (as Variant)
Neugierig geworden stellte ich dann fest, dass auch String() nicht funktioniert.

Ich kann natürlich auch mit Variant arbeiten. Gut finde ich das aber nicht. Warum kann man in Basic-Funktionen keine Arrays zurückgeben?

Oder mach ich Syntaxfehler?

pls explain

Axel
Titel: Re: Array als Rückgabewert einer Funktion nicht erlaubt?
Beitrag von: Glombi am 17.12.04 - 10:12:30
Hi Axel,
Du machst keinen Syntaxfehler.

In der Hilfe steht dazu:

[ Public | Private ] [ Static ] Function  functionName [ ( parameters ) ] [ As dataType ]

dataType
Specifies the data type of the function’s return value. A function can return a scalar value, a Variant, or an object reference. If you include this clause, functionName cannot end in a data type suffix. If you omit this clause and functionName doesn’t end in a data type suffix (and isn’t covered by an existing Deftype statement), the function’s return value is Variant.

Array sind keine scalar values.

Dazu noch


Tests an expression to determine if it evaluates to a single value.
Syntax
IsScalar ( expr )
Elements
expr
Any expression.
Return value
The IsScalar function returns TRUE (-1) if expr evaluates to one of the following:
EMPTY
Byte
Integer
Long
Single
Double
Currency
Date/Time
String
OLE error
Boolean (TRUE, FALSE)
Otherwise (if expr is an array, list, object, NOTHING, or NULL), IsScalar returns FALSE (0).

Andreas
Titel: Re: Array als Rückgabewert einer Funktion nicht erlaubt?
Beitrag von: umi am 17.12.04 - 10:27:10
Hi axel
Da Notes alle Variabeln als Referenz übergibt könntest Du auch folgendes machen:

Code
Function buildMappingCommands (dbCur As NotesDatabase, returnArray() as ACommand) as boolean

Titel: Re: Array als Rückgabewert einer Funktion nicht erlaubt?
Beitrag von: Marinero Atlántico am 17.12.04 - 10:45:01
Code
Function buildMappingCommands (dbCur As NotesDatabase, returnArray() as ACommand) as boolean

Guter Punkt. in rdbms stored procedures sieht das immer so ähnlich aus, wenn ich mich recht erinnere.
Speicher aber jetzt den Array in eine globale Variable:  :P
Will das später sowieso nochmal überarbeiten und dafür ein gof-Command Pattern implementieren.
Wenn ich das aber mache und das heute abend nicht fertig ist, muss ich mir Gemecker anhören.
Also mache ich das erstmal ein bischen quick_and_dirty und refaktoriere das später.
Am besten zu Hause, weit weg von diesen grobschlächtigen "Pragmatikern".   

Gruß Axel
Titel: Re: Array als Rückgabewert einer Funktion nicht erlaubt?
Beitrag von: Semeaphoros am 17.12.04 - 12:58:56
Deklariere die Funktion als Variant und Du kannst problemlos einen Array zurückgeben. Einen Array zurückzugeben, macht bei der Basic-internen Struktur keinen Sinn, das müsste ja ein dimensionsloser oder variabler Array sein, den kennt Basic von Hause aus nicht, dafür hat das Ding zu wenig dynamic