Comparaison avec une valeur non définie

Traduit automatiquement de Deepl

Depuis l’apparition d’ORDA, de classes et d’autres objets, vous devez travailler de plus en plus avec des valeurs non définies.

Puisque certains d’entre vous demandent une façon plus facile de les utiliser, à partir de la v20, vous pouvez comparer n’importe quel type de valeur à une valeur non définie sans générer d’erreur.

Habituellement, dans 4D, les opérateurs de comparaison =, #, >, <, >= et <= vérifient le type et la valeur de chaque opérande. Si les types des deux opérandes sont différents, la comparaison génère une erreur :

Comme nous l’avons déjà mentionné, nous comprenons que lorsque vous travaillez avec des classes et des objets, vous devez travailler avec des valeurs non définies, c’est pourquoi nous avons assoupli cette règle. À partir de la version 20, vous pouvez comparer des valeurs non définies avec tous les types de variables :

  • La comparaison = renvoie un résultat vrai lorsque vous comparez une variable non définie avec une valeur nulle ou non définie, et un résultat faux dans tous les autres cas :
$o:=new object
If ($o.undefined =10)
  ...
else
  // returns false because $o.undefined is undefined
  ...
End if
  • La comparaison # renvoie un résultat faux lorsque vous comparez une variable non définie à une valeur nulle ou non définie et un résultat vrai dans tous les autres cas :
$o:=new object
If ($o.undefined #10)
  // returns true because $o.undefined is undefined
  ...
else
  ...
End if
  • Les comparaisons>, <, >= et <= renvoient false pour toutes les comparaisons entre une variable non définie et une valeur scalaire (numérique, texte, date, heure, booléen). Comme la comparaison n’a pas de sens, 4D renvoie une erreur pour les autres types.
$o:=new object
If ($o.undefined >10)
  ...
else
  // returns false because $o.undefined is undefined
  ...
End if

Consultez la documentation pour plus de détails !

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.