Autor Thema: Array als Rückgabewert einer Funktion nicht erlaubt?  (Gelesen 1611 mal)

Marinero Atlántico

  • Gast
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

Glombi

  • Gast
Re: Array als Rückgabewert einer Funktion nicht erlaubt?
« Antwort #1 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

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Array als Rückgabewert einer Funktion nicht erlaubt?
« Antwort #2 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

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Marinero Atlántico

  • Gast
Re: Array als Rückgabewert einer Funktion nicht erlaubt?
« Antwort #3 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

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Array als Rückgabewert einer Funktion nicht erlaubt?
« Antwort #4 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
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz