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