Lenguaje 4D: Las mejoras que solicitaste están aquí

Traducido automáticamente de Deepl

¿Sueña con utilizar la evaluación en cortocircuito, los operadores ternarios, liberarse de un bucle o salir de un método con una simple palabra clave?

Pues bien, ¡no sueñe más! Hemos escuchado y estado atentos a sus peticiones de características en el Foro 4D, así que aquí viene un conjunto de mejoras del lenguaje 4D que le ayudarán a simplificar su código.

return, continue y break

Añadimos 2 nuevas sentencias que le permiten saltar de un bloque de código:

  • La palabra clave return termina la ejecución del método o función en el que aparece y devuelve el control al método que lo llama. También puede devolver un valor opcional:
function factorial ( $n : Integer) : Integer
  
If ($n<1)
  return 1
Else 
  return $n*factorial($n-1)
End if 
  • La palabra clave break termina el bucle que la contiene. La siguiente sentencia que se ejecuta es la que está inmediatamente después del cuerpo del bucle:
For ($i; 1; 100)
   If ($myTab{$i}="")
      break
   End if 
End for
If ($i<101)
   // your code
End if
  • La sentencia continue termina la ejecución de las sentencias en la iteración actual del bucle actual y continúa la ejecución del bucle con la siguiente iteración:
For ($i; 0; 10)
   If ($i=3)
      continue
   End if
   $text+=String($i)
End for
// $text="012456789" 

evaluación en cortocircuito

En una expresión que utiliza un operador AND o OR, una evaluación de cortocircuito significa que el segundo argumento se ejecuta o evalúa sólo si el primer argumento no es suficiente para determinar el valor de la expresión. Para ello hemos añadido dos nuevos operadores

  • && para el operador AND:
  • || para el operador OR

Esta nueva forma de escribir los operadores AND y OR permite escribir este tipo de pruebas en una sola línea:

if (($myColl.length>0) && ($myColl[$i]>10))
	// your code
End if 

Si $myColl está vacío, el segundo argumento no se ejecuta, por lo que no se lanza ningún error.

Así que, por supuesto, todos ustedes entienden el interés de este estilo de escritura para hacer su código más legible. Pero le permite ir más allá.

Cuando se escribe expr1 && expr2 o expr1 || expr2, 4D evalúa ambas expresiones truthy o falsy naturaleza. Los valores indicados a continuación se consideran falsy:

  • falso
  • Null
  • indefinido
  • Null objeto
  • Null colección
  • Null puntero
  • Null imagen
  • Null fecha
  • «» – Cadenas vacías
  • [] – Colecciones vacías
  • {} – Objetos vacíos

Todos los demás valores se consideran truthy.

El operador || devuelve la primera expresión si la primera expresión es truthy, en caso contrario devuelve la segunda.

El operador && devuelve la primera expresión si la primera expresión es falsyen caso contrario, devuelve la segunda.

Por ejemplo, el código siguiente no devuelve un booleano sino un valor numérico:

$salary:= $employee.salary || $minSalary

$employee.salary se evalúa primero. Si su resultado no es Null, se considera como truthy y se devuelve.

Si $employee.salary es Null, y por tanto falsyse evalúa la segunda expresión($minSalario) y se devuelve su resultado.

Operadores de asignación compuestos

Los operadores de asignación compuestos son una forma simplificada de escribir operaciones:

  • El operador de asignación de suma (+=) suma el valor del operando derecho a una variable y asigna el resultado a la variable.
$a+=5  
 // equals to $a:=$a+5
  • El operador de asignación de sustracción (-=) resta el valor del operando derecho de una variable y asigna el resultado a la variable.
$s-=5 
// equals to $s:=$s-5
  • El operador de asignación de división (/=) divide una variable por el valor del operando derecho y asigna el resultado a la variable.
$d/=2 
// equals to $d:=$d/2
  • El operador de asignación de multiplicación (*=) multiplica una variable por el valor del operando derecho y asigna el resultado a la variable.
$m*=5 
// equals to $m:=$m*5

Operador ternario

Un operador ternario es una condición seguida de un signo de interrogación ( ? ), una expresión a evaluar si la condición es truthy seguida de dos puntos ( : ). Finalmente, la expresión a evaluar si la condición es falsy: condición ? valor Si es Verdadero : valor Si es Falso

Por ejemplo, se puede escribir:

$label:=($size>1000) ? "big" : "small" 

El operador ternario es muy similar al comando Choose excepto que Choose sólo acepta una expresión booleana como condición cuando el operador ternario acepta todos los tipos y comprueba sus falsy y truthy condición.

Puede obtener más información aquí.

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.