Le langage 4D : Les améliorations que vous avez demandées sont ici

Traduit automatiquement de Deepl

Vous rêvez d’utiliser l’évaluation en court-circuit, les opérateurs ternaires, de vous libérer d’une boucle ou de sortir d’une méthode avec un simple mot-clé ?

Eh bien, ne rêvez plus ! Nous avons écouté et gardé un œil sur vos demandes de fonctionnalités du forum 4D, et voici donc un ensemble d’améliorations du langage 4D qui vous aideront à simplifier votre code.

return, continue, et break

Nous ajoutons 2 nouvelles instructions qui vous permettent de sauter d’un bloc de code :

  • Le mot-clé return met fin à l’exécution de la méthode ou de la fonction dans laquelle il apparaît et rend le contrôle à la méthode appelante. Il peut également renvoyer une valeur facultative :
function factorial ( $n : Integer) : Integer
  
If ($n<1)
  return 1
Else 
  return $n*factorial($n-1)
End if 
  • Le mot-clé break met fin à la boucle qui le contient. L’instruction suivante exécutée est celle qui suit immédiatement le corps de la boucle :
For ($i; 1; 100)
   If ($myTab{$i}="")
      break
   End if 
End for
If ($i<101)
   // your code
End if
  • L’instruction continue met fin à l’exécution des instructions de l’itération actuelle de la boucle en cours et poursuit l’exécution de la boucle avec l’itération suivante :
For ($i; 0; 10)
   If ($i=3)
      continue
   End if
   $text+=String($i)
End for
// $text="012456789" 

évaluation en court-circuit

Dans une expression qui utilise un opérateur AND ou OR, une évaluation en circuit court signifie que le deuxième argument est exécuté ou évalué uniquement si le premier argument ne suffit pas à déterminer la valeur de l’expression. Nous avons ajouté deux nouveaux opérateurs pour le faire :

  • && pour l’opérateur AND :
  • || pour l’opérateur OR

Cette nouvelle façon d’écrire vos opérateurs AND et OR vous permet d’écrire ce type de test en une seule ligne :

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

Si $myColl est vide, le deuxième argument n’est pas exécuté, et aucune erreur n’est donc émise.

Alors, bien sûr, vous avez tous compris l’intérêt de ce style d’écriture qui permet de rendre votre code plus lisible. Mais il vous permet d’aller plus loin.

Lorsque vous écrivez expr1 && expr2 ou expr1 || expr2, 4D évalue les deux expressions truthy ou falsy nature. Les valeurs énumérées ci-dessous sont considérées comme falsy:

  • false
  • Null
  • indéfini
  • Null objet
  • Null collection
  • Null pointeur
  • Null image
  • Null date
  • «  » – Chaînes de caractères vides
  • [] – Collections vides
  • {} – Objets vides

Toutes les autres valeurs sont considérées comme truthy.

L’opérateur || renvoie la première expression si la première expression est truthysinon, il renvoie la seconde.

L’opérateur && renvoie la première expression si la première expression est falsysinon, il renvoie la seconde.

Par exemple, le code ci-dessous ne renvoie pas un booléen mais une valeur numérique :

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

$employee.salary est évalué en premier. Si son résultat n’est pas Null, il est considéré comme truthy et est retourné.

Si $employee.salary est Null, et donc falsyla deuxième expression($minSalary) est évaluée et son résultat est renvoyé.

Opérateurs d’affectation composés

Lesopérateurs d’affectation composés sont une forme simplifiée des opérations d’écriture :

  • L’opérateur d’affectation d’addition (+=) ajoute la valeur de l’opérande de droite à une variable et affecte le résultat à la variable.
$a+=5  
 // equals to $a:=$a+5
  • L’opérateur d’affectation de soustraction (-=) soustrait la valeur de l’opérande de droite d’une variable et affecte le résultat à la variable.
$s-=5 
// equals to $s:=$s-5
  • L’opérateur d’affectation de division (/=) divise une variable par la valeur de l’opérande de droite et affecte le résultat à la variable.
$d/=2 
// equals to $d:=$d/2
  • L’opérateur d’affectation de multiplication (*=) multiplie une variable par la valeur de l’opérande de droite et affecte le résultat à la variable.
$m*=5 
// equals to $m:=$m*5

Opérateur ternaire

Un opérateur ternaire est constitué d’une condition suivie d’un point d’interrogation ( ? ), d’une expression à évaluer si la condition est truthy suivie de deux points ( : ). Enfin, l’expression à évaluer si la condition est falsy: condition ? valeur If True : valeur If False

Par exemple, vous pouvez écrire :

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

L’opérateur ternaire est très similaire à la commande Choose sauf que Choose n’accepte qu’une expression booléenne comme condition alors que l’opérateur ternaire accepte tous les types et teste leurs falsy et truthy état.

Plus d’informations sont disponibles ici.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené a rejoint l'équipe du programme 4D en novembre 2016. En tant que Product Owner, il est en charge de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation de la fonctionnalité livrée répond au besoin du client.Après avoir obtenu une licence en informatique au CNAM, Fabrice a rejoint une petite société d'édition de logiciels en tant que développeur Windev. Il a ensuite travaillé pour différentes entreprises dans les domaines de l'industrie et du commerce en tant que développeur Windev et web ainsi que conseiller technique sur les nouvelles fonctionnalités.