Eine nahtlose Art, Parameter zu verwalten

Bei der Deklaration einer Funktion oder Methode werden die Parameter explizit angegeben. Wenn Sie diese Funktion oder Methode aufrufen, können Sie ihr weniger Parameter übergeben, wenn einige optional sind. Oder, wenn Sie die Deklaration mit ${n} verwendet haben, ist die Anzahl der übergebenen Parameter variabel. In diesem Fall verwenden Sie den Count Parameters Befehl mit einer Schleife über die Argumente. Dieser Code funktioniert tadellos. Trotzdem ist er ein wenig schwerfällig.

Sie haben uns nach einer einfacheren Methode zur Handhabung von Parametern gefragt, und wir haben zugehört. Ab 4D v19 R5 stellen wir Ihnen einen neuen Befehl zur Verfügung, Copy parameterszur Verfügung, mit dem Sie einen nahtlosen, eleganteren und leichter zu lesenden Code schreiben können.

Sehen Sie sich den neuen Befehl in Aktion an.

Neuer Befehl

Der neue Befehl, Copy parametersgibt eine Sammlung von Parametern zurück, die an eine Funktion oder eine Methode übergeben wurden. Wenn Sie den Parameter „startFrom“ Parameter an den Copy parameters übergeben, wird eine Sammlung zurückgegeben, die das Element mit dem Index „startFrom“ enthält.

Beispiele

Manipulieren Sie die Parameter als eine Sammlung. Verketten Sie zum Beispiel eine Zeichenkette mit den Parametern, um eine ungeordnete HTML-Liste zu erstellen:

// Class
Function list() -> $html: Text
var $value : Collection
$value :=Copy parameters
$html :="<ul><li>"
$html +=$value.join("</li><li>")
$html +="</li></ul>"
return $html

// Method
$htmlList :=$c.list("Alpha"; "Bravo"; "Charlie"
)
// $htmlList: <ul><li>Alpha</li><li>Bravo</li><li>Charlie</li></ul>

Rufen Sie je nach dem ersten Parameter eine andere Funktion auf und übergeben Sie die anderen Parameter an diese Methode:

Function selectTask($task: Text)
Case of
: ($task="Task1")
This .task1(Copy parameters(2))
: ($task="Task2")
This .task2(Copy parameters(2))
End case

Oder rufen Sie eine andere Funktion auf einem anderen Objekt mit apply() auf und übergeben Sie die Parameter:

Function doSomething($param: Text; $extraParameters: Variant)
This .delegate.doSomething.apply(This.delegate; Copy parameters)

Weiter

Für weitere Informationen können Sie die Dokumentation lesen. Zögern Sie nicht, Ihre Ideen und Beispiele im Forum zu teilen.

Vanessa Talbot
Product Owner - Vanessa Talbot kam im Juni 2014 zum 4D Programmteam. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Seit ihrer Ankunft hat sie an der Definition der wichtigsten Funktionen in 4D gearbeitet. Sie hat an den meisten der neuen Funktionen für präemptives Multi-Threading gearbeitet und auch an einem sehr komplexen Thema: der neuen Architektur für erstellte Anwendungen. Vanessa hat einen Abschluss von der Telecom Saint-Etienne. Sie begann ihre Karriere am Criminal Research Institute als Entwicklerin für die audiovisuelle Abteilung. Sie hat auch in den Bereichen Medien und Medizin als Expertin für technischen Support, Produktion und die Dokumentation neuer Funktionen gearbeitet.