¡Para la prensa! El acceso a los parámetros que no se pasan es … posible

Traducido automáticamente de Deepl

Un método o función puede tener parámetros opcionales. A veces se llama a la función con dos parámetros, y otras veces con tres parámetros. Todos hemos soñado con acceder a los parámetros sin contar los parámetros, comprobar si el parámetro ha sido pasado, o simplemente no tener que comprobar si la variable asociada al parámetro ha sido inicializada. Esto podría hacer el código mucho más simple, y mucho más legible, sin todas las líneas «If» o «Count parameters».

Pues bien, ¡no sueñe más y pase a 4D v19 R3! La gestión de los parámetros de métodos y funciones nunca ha sido tan fácil.

Acceda a los parámetros

Ahora, para los parámetros que haya declarado en el prototipo de una función o método, si el parámetro no se pasa durante la llamada, la variable se instanciará con el valor vacío. Incluso en modo compilado, ya no se produce un error en tiempo de ejecución por este motivo. En esta página de documentación, tienes una tabla con la correspondencia para cada tipo de variable.

En el siguiente ejemplo, la función utiliza los parámetros $param1 y $param2 sin una comprobación. Si al llamar a la función no se pasan los parámetros $param1 y/o $param2, 4D instanciará la variable texto a una cadena vacía:

// "concate" function class
Function concate ( : ; : ) ( +" "+ ) $param1 Text $param2 Text
Alert$param1$param2

// "method1" method
$class. ("Hola";" mundo") . ("Hola") . ()concate // Display: "Hello world"
$classconcate // Display: "Hello "
$classconcate // Display: " "

Tenga cuidado. Para que 4D instancie su variable, necesita saber el tipo de esa variable. Si utiliza la notación ${i} y no ha pasado y declarado el parámetro, siempre obtendrá un error de ejecución en modo compilado.

Inicializar los parámetros

Acabamos de ver que si no se pasa un parámetro, su variable asociada se instala con el valor vacío. Así que ahora puedes usar el comando Choose para definir directamente un valor si no se pasa el parámetro.

Aquí hay un ejemplo con un método y la #DECLARE instrucción:

// "myAlert" method
#DECLARE($param1: Text; $param2: Text)
$param1 :=Choose(Count parameters>=1 ; $param1; "Hola")
$param2 :=Choose(Count parameters>=2 ; $param2; "mundo")
Alert ($param1+" "+$param2)

// "method1" method
myAlert
() // Display: "Hello world"

¿Y los componentes?

Para beneficiarse de esta simplificación, el método llamado y el método llamante deben ser recompilados. Por lo tanto, en el caso de un método compartido entre la base anfitriona y un componente, ambos proyectos deben ser recompilados.

Pero, ¿qué pasa con los componentes compilados, cuyos fuentes no tengo? No te preocupes, puedes seguir utilizándolos como antes. No es necesario cambiar su código.

¿Qué es lo siguiente?

Esta nueva característica te da muchas ideas para tus métodos y funciones. No dudes en compartir tus consejos en el foro.

Vanessa Talbot
• Propietario de producto - Vanessa Talbot llegó al equipo de 4D Program en junio de 2014. Como Propietario de producto, está a cargo de escribir las historias de los usuarios y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la funcionalidad entregada cumpla con las necesidades del cliente. Desde su llegada, ha trabajado en la definición de funcionalidades claves en 4D. Ha trabajado en la mayoría de las nuevas funcionalidades de multi hilo apropiativo y también en un tema muy complejo: la nueva arquitectura para la aplicación engined. Vanessa es licenciada por Telecom Saint-Etienne. Comenzó su carrera en el Instituto de Investigación Criminal como desarrolladora del departamento audiovisual. También ha trabajado en medios de comunicación y en el ámbito médico como experta en soporte técnico, producción y documentación de nuevas funcionalidades.