Uma forma sem costura de gerir os parâmetros

Tradução automática de Deepl

Na declaração de uma função ou método, defina explicitamente os seus parâmetros. Depois, ao chamar essa função ou método, pode passar-lhe menos parâmetros, se alguns forem opcionais. Ou, se utilizou a declaração com ${n}, o número de parâmetros passados é variável. Neste caso, utiliza-se a função Count Parameters com um loop sobre os argumentos. Este código funciona sem falhas. Ainda assim, é um pouco pesado.

Pediu-nos uma forma mais leve de lidar com os parâmetros, e nós ouvimos. Começando com 4D v19 R5, fornecemos-lhe um novo comando, Copy parameters, permitindo-lhe escrever um código sem costura, mais elegante, e mais fácil de ler.

Ver o novo comando em acção.

Novo comando

O novo comando, Copy parametersdevolve uma colecção dos parâmetros passados a uma função ou a um método. Se passar o “startFrom” para o parâmetro Copy parameters devolve uma colecção que contém o elemento do índice “startFrom“.

Exemplos

Manipular os parâmetros como uma colecção. Por exemplo, concatenar uma cadeia com os parâmetros para criar uma lista HTML desordenada:

// 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("Alfa"; "Bravo"; "Charlie"
)
// $htmlList: <ul><li>Alpha</li><li>Bravo</li><li>Charlie</li></ul>

Chamar uma função diferente dependendo do primeiro parâmetro e passar os outros parâmetros para este método:

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

Ou, chamar outra função sobre outro objecto com apply() e passar os parâmetros:

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

Próximo

Pode ler a documentação para mais informações. Não hesite em partilhar as suas ideias e exemplos no fórum.

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.