A Utilização de Fórmulas em Colecções & Comandos de Rechamada

Tradução automática de Deepl

Quando utilizam colecções com um método de membro que necessita de um método de chamada de retorno, muitos de vós pediram-nos uma forma mais directa.

Vocês pediram; nós entregamos!

Começando com 4D v19 R6, 4D permite-lhe usar uma fórmula para definir uma chamada de retorno nas funções dos membros da colecção, o EXECUTE METHOD IN SUBFORM, CALL FORMe CALL WORKER ordens. Se conseguir reduzir o seu código a uma simples expressão, pode passá-lo directamente para a fórmula sem utilizar um método.

Fórmula de HDI em comandos

fórmula em COLLECTIoN

Pode agora usar a fórmula como revogação nos métodos de membros: .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()

Por exemplo, se quiser filtrar a colecção para encontrar todos os membros com mais de 0, pode fazê-lo numa só linha:

$result:=$c.filter(Formula($1.value>0))

Como pode ver acima, para ser mais simples e legível, tornamos o resultado de $1.0 opcional nas fórmulas.

Evidentemente, pode sempre utilizar o código:

$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter("NumberGreaterThan0")

mas também pode usar fórmula para se referir a um método e assim beneficiar do preenchimento do código para encontrar o nome do seu método, e tirar partido da renomeação automática se mudar o nome do seu método:

$c:=New collection
$c.push(1;-5; -3; -1;3; -4; -6; -2;10)
$result:=$c.filter(Formula(NumberGreaterThan0))

com o método NumberGreaterThan0:

#DECLARE ($param:Object)
$param.result:=$param.value>0

fórmula em comandos

Pode utilizar uma fórmula para definir uma chamada de retorno na EXECUTE METHOD IN SUBFORM, CALL FORMe CALL WORKER ordens.

Quanto às colecções, é possível utilizar expressões sem ter de criar um método:

// Close the windows in the context of the form
CALL FORM($windows;formula(CANCEL))

ou referir-se a um método com uma destas 2 formas:

EXECUTE METHOD IN SUBFORM("Subform"; Formula(UpdateField))

ou

EXECUTE METHOD IN SUBFORM("Subform"; "UpdateField")

Experimente todas estas novas funcionalidades com o HDI acima, e não hesite em dar o seu feedback sobre o fórum!

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.