Domino 9 und frühere Versionen > Entwicklung
Array als Rückgabewert einer Funktion nicht erlaubt?
(1/1)
Marinero Atlántico:
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()
--- Ende Code ---
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
Glombi:
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
umi:
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
--- Ende Code ---
Marinero Atlántico:
--- Zitat von: umi am 17.12.04 - 10:27:10 ---
--- Code: ---Function buildMappingCommands (dbCur As NotesDatabase, returnArray() as ACommand) as boolean
--- Ende Code ---
--- Ende Zitat ---
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
Semeaphoros:
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
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln