Conditions
Les conditions vous permettent d'exécuter différentes actions selon qu'une condition est vraie ou fausse. C'est la base de toute logique métier.
Structure de base
La structure conditionnelle en Miel s'écrit avec un ? et un : : la condition, puis la valeur si elle est vraie, puis celle si elle est fausse.
condition ? valeurSiVrai : valeurSiFauxCette structure fonctionne comme suit :
- La condition est évaluée
- Si elle est
true, on retourne valeurSiVrai - Sinon, on retourne valeurSiFaux
Bon à savoir
Les espaces autour du ? et du : sont libres, et la condition peut s'écrire sur plusieurs lignes. Quand il n'y a rien à renvoyer dans l'autre cas, écrivez null.
Condition simple
Voici un exemple basique qui affiche un message différent selon le montant d'une commande :
commande.total > 1000
? "Client Premium"
: "Client Standard"Décortiquons cet exemple :
commande.total > 1000est la condition"Client Premium"est retourné si le total dépasse 1000"Client Standard"est retourné sinon
Autres exemples
// Vérifier si un produit est en stock
produit.stock > 0
? "Disponible"
: "Rupture de stock"
// Calculer une remise conditionnelle
client.fidele === true
? commande.total * 0.9
: commande.total
// Afficher un statut coloré
facture.payee === true
? "✓ Payée"
: "⏳ En attente"Conditions multiples (en cascade)
Quand vous avez plus de deux cas possibles, enchaînez les ternaires : la valeur qui suit un : peut être une nouvelle condition. Aucune parenthèse n'est nécessaire.
employe.age < 18
? "Mineur"
: employe.age > 65
? "Senior"
: "Adulte"Dans cet exemple :
- Si l'âge est inférieur à 18 → "Mineur"
- Sinon, si l'âge est supérieur à 65 → "Senior"
- Sinon (entre 18 et 65) → "Adulte"
Plusieurs cas en cascade
Vous pouvez enchaîner autant de cas que nécessaire :
client.score >= 16
? "Très bien"
: client.score >= 14
? "Bien"
: client.score >= 12
? "Assez bien"
: client.score >= 10
? "Passable"
: "Insuffisant"Attention à l'ordre
Les conditions sont évaluées de haut en bas. Dès qu'une condition est vraie, les suivantes ne sont pas testées. Mettez toujours les conditions les plus spécifiques en premier.
Conditions imbriquées
Vous pouvez imbriquer des conditions les unes dans les autres pour des logiques plus complexes.
client.type === "professionnel"
?
commande.total > 5000
? "Remise 15%"
: "Remise 10%"
:
commande.total > 1000
? "Remise 5%"
: "Pas de remise"Conseil
Les conditions imbriquées peuvent vite devenir difficiles à lire. Pour les cas complexes, pensez à utiliser des variables pour stocker les résultats intermédiaires.
Évaluation paresseuse
Miel utilise l'évaluation paresseuse (lazy evaluation) pour les conditions. Cela signifie que seule la branche choisie est réellement exécutée.
commande.total > 0
? commande.total / commande.quantite
: 0Dans cet exemple, si le total est 0 ou négatif, la division n'est jamais exécutée. Cela évite une division par zéro potentielle.
Avantage de l'évaluation paresseuse
Grâce à l'évaluation paresseuse, vous pouvez écrire des conditions qui protègent contre les erreurs. La branche non exécutée peut contenir du code qui échouerait, mais cela ne pose pas de problème car elle n'est jamais évaluée.
Exemples pratiques
Calculer les frais de port
commande.total >= 100
? 0
: commande.poids > 5
? 15
: 5Livraison gratuite au-dessus de 100€, sinon 15€ pour les colis lourds, 5€ sinon.
Afficher un message d'urgence
tache.dateEcheance < today()
? "⚠️ En retard"
: tache.dateEcheance === today()
? "📌 À faire aujourd'hui"
: tache.dateEcheance <= today() + 3
? "🔔 Bientôt"
: "✓ Dans les temps"Vérifier la validité d'un email
client.email.exists()
? client.email
: "Email non renseigné"Utilise exists pour vérifier si le champ a une valeur.
Combiner avec des opérateurs logiques
commande.total > 1000 && client.fidele === true
? "Remise VIP : 20%"
: commande.total > 500 || client.fidele === true
? "Remise : 10%"
: "Pas de remise"Prochaine étape
Pour rendre vos formules plus lisibles, apprenez à utiliser des variables pour stocker des valeurs intermédiaires.