Bezproblémový způsob správy parametrů

Automaticky přeloženo z Deepl

V deklaraci funkce nebo metody explicitně definujete její parametry. Při volání této funkce nebo metody jí pak můžete předat méně parametrů, pokud jsou některé z nich nepovinné. Nebo, pokud jste použili deklaraci s ${n}, je počet předávaných parametrů proměnný. V takovém případě použijete Count Parameters příkaz s cyklem nad argumenty. Tento kód funguje bezchybně. Přesto je trochu těžkopádný.

Požádali jste nás o lehčí způsob zpracování parametrů a my jsme vás vyslyšeli. Počínaje verzí 4D v19 R5 vám nabízíme nový příkaz, Copy parameters, který vám umožní psát bezproblémový, elegantnější a přehlednější kód.

Podívejte se na nový příkaz v akci.

Nový příkaz

Nový příkaz, Copy parameters, vrací kolekci parametrů předaných funkci nebo metodě. Pokud předáte příkaz „startFrom“ parametr příkazu Copy parameters příkaz, vrátí kolekci, která obsahuje prvek z indexu „startFrom„.

Příklady

Manipulace s parametry jako s kolekcí. Například spojte řetězec s parametry a vytvořte neuspořádaný seznam HTML:

// 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>

Zavolání jiné funkce v závislosti na prvním parametru a předání ostatních parametrů této metodě:

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

Nebo zavolejte jinou funkci na jiném objektu pomocí apply() a předejte parametry:

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

Další

Další informace si můžete přečíst v dokumentaci. Neváhejte se podělit o své nápady a příklady na fóru.

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.