Optionale Parameter - wie?

7. Januar 2010 15:43

Hallo zusammen,

mal eine Grundsatzfrage: ist es möglich, Funktionen zu schreiben, die mit optionalen Parametern Arbeiten und wenn ja - wie?!? Irgendwie muss es ja gehen; FORMAT verwendet das z.B. , und ich würde das gern für ein paar eigene Funktionen verwenden, weil es einfach zu praktisch ist, aber ich finde keine Informationen zu dem Thema ... :roll:

Re: Optionale Parameter - wie?

7. Januar 2010 15:47

Du könntest einer Funktion einen String mit Parametern mitgeben und den selbst parsen, aber sonst wüsste ich nicht, dass da etwas machbar wäre :roll:

Re: Optionale Parameter - wie?

7. Januar 2010 17:28

Nein, das ist nicht möglich, entweder erwartet sie Parameter oder nicht. Werden zuviele oder wenige übergeben "knallt" es.

Nur wie McClane es schreibt, z.B. die Funktion erwartet immer einen String.
Dieser wird kommasepariert übergeben und von der Funtkion zerlegt, aber das macht mehr arbeit, als das es erleichterung bringen würde.

Einzige alternative (und die sollte auch nur als Notlösung dienen, da dieses unschönen Code ergibt) wäre, in dem Objekt eine zusätzliche Funktion erstellen, die einen Wert erwartet und diesen Global initalisiert.
Dann kann beim Aufruf der eigentlichen Funktion diese Variable abgefragt/verwendet werden.

Re: Optionale Parameter - wie?

7. Januar 2010 18:27

Warum nicht 2 Funktionen?

func(param1, param2)
func(param1)

So kenn ich das von .NET. Optional ist zwar möglich, aber o. g. ist einfacher. Außerdem könnte die eine Funktion ggf. die andere aufrufen z. B.

func(param1) -> func(param1, standardwert)


Volker

Re: Optionale Parameter - wie?

7. Januar 2010 19:15

@vsnase
das geht leider nicht in NAV ;)

mein Tipp:
Oberfunktion(Parameter1,Parameter2,Parameter3,Parameter4,Parameter5,Parameter6);

die Parameter sollten Text oder Code sein sodass sie leer gelassen werden können. Was immer gemacht werden muss (bei allen gleich) tippste so rein und bei den optionalen machst du ein
Code:
IF Parameter1 <> '' THEN ...

so ca. meine Idee :)

Re: Optionale Parameter - wie?

8. Januar 2010 15:20

Naja - schade eigentlich. Man kann sich an optionale Parameter und Funktionsüberladung schon gewöhnen :-) (also das geht definitiv auch nicht, dass ich z.B. zwei Funktionen deklariere, die gleich heissen, aber sich in den Parametern und/oder Rückgabewerten unterscheiden?) ....

Re: Optionale Parameter - wie?

8. Januar 2010 15:34

CaddyM hat geschrieben:Naja - schade eigentlich. Man kann sich an optionale Parameter und Funktionsüberladung schon gewöhnen :-) (also das geht definitiv auch nicht, dass ich z.B. zwei Funktionen deklariere, die gleich heissen, aber sich in den Parametern und/oder Rückgabewerten unterscheiden?) ....


Ja, das geht definitiv nicht. Name ist eindeutig. Viele andere schöne Programmiersprachen können das.

Re: Optionale Parameter - wie?

8. Januar 2010 16:01

Mal blöd gefragt, hieß das nicht "Funktionen überladen" oder so?
(Ist schon ne Weile her bei mir...)

Re: Optionale Parameter - wie?

8. Januar 2010 16:31

mikka 12 points!


ich hoffe das kommt mit der neuen Version xD

Re: Optionale Parameter - wie?

8. Januar 2010 16:36

mikka hat geschrieben:Mal blöd gefragt, hieß das nicht "Funktionen überladen" oder so?


Wie CaddyM schon erwähnt hat ;)
CaddyM hat geschrieben:Man kann sich an optionale Parameter und Funktionsüberladung schon gewöhnen :-)

Re: Optionale Parameter - wie?

8. Januar 2010 21:16

CaddyM hat geschrieben:Naja - schade eigentlich. Man kann sich an optionale Parameter und Funktionsüberladung schon gewöhnen :-)


Ich hätte schwören können, dass stand da eben noch nicht 8-)
Ne, ich habe es nicht gesehen, trotzdem danke.

Btw: Heißt doch eigentlich "Allemagne Dix points, Germany-ten points"?
(Da hieß das noch: "Grand Prix Eurovision de la Chanson", Raider war noch in einer roten Verpackung und Twix hieß noch Raider) Buhuhu, :cry: bin ich alt geworden... und es gab noch das Eis "Brauner Bär" und wo ist der Flutschfinger....

Re: Optionale Parameter - wie?

22. Januar 2010 15:00

Hey,

ich weiß nicht obs dir noch was bringt, aber es gibt doch die Möglichkeit dir eine CU zu bauen die Funktionen beherbergt wie z.B. SetzteCode und HoleCode. Diese CU muss als SingleInstance CU laufen, dann kannst du dir die Parameter reinladen die du brauchst und kannst sie nachher wieder auslesen ohne an die Parameterliste einer Funktion gebunden zu sein.
Das ist auch sehr nützlich wenn du beispielsweise Parameter durch eine ewige Liste von Funktionen schleifen musst.
Die Umsetzung stammt von einem Kollegen von mir und ich finde sie herrlich :wink:

VG Chris