avancé cfif déclaration
Comment puis-je créer cette déclaration en CF?
<cfif (not isdefined("URL.room") or #URL.room# EQ "")
and (not isdefined("URL.system" or #URL.system# EQ "")
and (not isdefined("URL.date") or #URL.date# EQ "")>
Évidemment les parenthèses ne fonctionnent pas, mais d'illustrer ce que je suis en train d'accomplir. Quelle est la syntaxe pour cela?
EDIT:
Ok, je comprends comment utiliser l'ÉGALISEUR et tout ça. J'ai posté ceci dans un peu pressé. Ma question est sur les parenthèses. Il est syntaxiquement correct d'utiliser de cette façon?
- Vous n'avez pas besoin de hachages de là. Les hachages sont fondamentalement n'est requis que lorsque vous avez une chaîne sans eux (plutôt que d'une variable/expression)
Vous devez vous connecter pour publier un commentaire.
Point de vue syntaxique, oui. Le code de la syntaxe est correcte et ne pas jeter les erreurs de syntaxe.
Cependant, il n'est pas forcément la meilleure façon de le faire. À tout le moins, vous devriez avoir des retours à la ligne (là, pour le rendre plus lisible, comme suit:
Et je serais plus enclin à l'écrire comme ceci:
Parce que c'est beaucoup plus lisible et qu'il est plus évident que chaque ligne est en train de vérifier la même chose.
C'est en supposant que je faisais cela dans une seule instruction SI, de toute façon.
Si vous commencez à avoir beaucoup de conditions à vérifier, vous pourriez envisager de faire quelque chose comme ceci à la place:
Qui peut paraître intimidant au premier abord, mais est beaucoup plus facile à entretenir, il suffit d'ajouter un nouvel élément à FieldList (et vous pouvez déjà avoir une variable qui sert que purporse).
De toute façon, espérons-le, tout cela contribue - laissez-moi savoir si vous avez des questions sur elle.
hasLen
au lieu de l'aide. 🙂Je préfère...
Ou si vous êtes à l'aise avec le mélange de non-booléenne fonctions et expression booléenne
remplacer le = avec eq
Dans CFML les opérateurs de comparaison utiliser des caractères plutôt que des symboles:
De la même façon avec les opérateurs booléens:
Vous pouvez toujours utiliser les symboles traditionnels dans CFScript mode.
Également intéressant de mentionner que Railo, une alternative CFML moteur Adobe ColdFusion, vous permet d'utiliser les symboles dans la balise code, si il n'y a pas d'ambiguïté avec la balise de fermeture (par exemple, la condition est enveloppé dans des parenthèses).
@Henry:
Plus courte:
Len() est mieux que EQ ""
Vous devez penser à votre logique à travers un peu.
Vous ne pouvez pas vérifier pour voir si la chambre est une chaîne vide si elle n'est pas définie.
Probablement ce que vous avez vraiment besoin est :
Si (structkeyexist(URL,"la chambre") et (Len(URL.chambre) eq 0 ou URL.room eq 'bla'))
Faire quelque chose
D'autre
Faire quelque chose d'autre
J'ai peur stackoverflow coupe votre exemple de la condition sur mon téléphone, mais j'espère que cela illustre ce que vous devez faire.