El uso de fórmulas en colecciones y comandos de devolución de llamada

Traducido automáticamente de Deepl

Cuando se utilizan colecciones con un método miembro que necesita un método de devolución de llamada, muchos de ustedes nos han pedido una forma más directa.

Nos lo habéis pedido y os lo hemos dado.

A partir de 4D v19 R6, 4D le permite utilizar una fórmula para definir un callback en las funciones miembro de la colección, el EXECUTE METHOD IN SUBFORM, CALL FORM, y CALL WORKER comandos. Si puede reducir su código a una simple expresión, puede pasarla directamente a la fórmula sin usar un método.

Fórmula de HDI en los comandos

fórmula en COLECCIÓN

Ahora puede utilizar la fórmula como devolución de llamada en los métodos de los miembros: .every(), .filter(), .find(), .findIndex(), .map(), .orderByMethod(), .reduce(), .some(), .sort()

Por ejemplo, si quieres filtrar la colección para encontrar todos los miembros mayores que 0, puedes hacerlo en una línea:

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

Como puede ver arriba, para ser más sencillo y legible, hacemos que el $1.resultado sea opcional en las fórmulas.

Por supuesto, siempre puedes usar el código

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

pero también puedes usar la fórmula para referirte a un método y así beneficiarte del completado de código para encontrar el nombre de tu método, y aprovechar el renombrado automático si cambias el nombre de tu método:

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

con el método NumberGreaterThan0:

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

fórmula en los comandos

Puede utilizar una fórmula para definir una llamada de retorno en los métodos EXECUTE METHOD IN SUBFORM, CALL FORMy CALL WORKER comandos.

En cuanto a las colecciones, puedes utilizar expresiones sin tener que crear un método

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

o referirse a un método con una de estas 2 formas

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

o

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

Pruebe todas estas novedades con el IDH anterior y no dude en dar su opinión en el foro.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.