Y a-t-il une façon d'écrire cette logique dans une seule ligne de code élégante?
5 Réponses :
Comme Neil dit, c'est bien comme ça. Si vous voulez vraiment une seule ligne, vous pouvez en faire un n'a pas testé ce code, mais cela devrait fonctionner. p> p> cfscript code> avec un opérateur ternaire, comme:
Coldfusion 9:
<!--- Syntax: IIf(condition, trueStatement, falseStatement) ---> <cfset width = IIf((ThumbnailWidth EQ 0), 75, ThumbnailWidth) />
Quelqu'un avec CF9 sache-t-il si je peux utiliser == plutôt que EQ dans la version CF9? Je suppose que c'est toujours la meilleure pratique des FC d'utiliser EQ puisqu'il est compatible à l'envers, mais n'aurait pas d'importance dans ce cas.
Dans la pratique actuelle, pour la maintenabilité du code, je remplacerais le codé dur 75 avec une variable pouvant être définie dans un fichier de configuration.
Oui, vous pouvez utiliser ==, mais certains opérateurs qui ont ">" ou "<" ne doivent être utilisés que dans cfscript.
Je trouve votre assez élégant d'origine - raconte l'histoire, facile à lire. Mais c'est certainement une préférence personnelle. Heureusement, il y a toujours au moins neuf façons de faire quoi que ce soit dans la CFML.
Vous pouvez mettre cela sur une ligne (CFML n'a aucune exigence de fin de ligne): p> Vous pouvez également utiliser Fonction IIF () - Ça va Faites le truc: p> cette construction est un peu étrange tho '- est plus clair que je pense. La force de IIF () est que cela peut également être utilisé en ligne (il s'agit d'une fonction après tout). Par exemple: p> Ce dernier formulaire est souvent utilisé pour maintenir une disposition HTML propre (ER) tout en injectant du code dynamique. P> P>
Je crois que iif () code> nécessite l'utilisation de de () code>.
@Tomalak: Je ne pense pas que ce soit nécessaire dans ce cas, car nous passons des entiers plutôt que des cordes. (Source: Livedocs.Adobe.com/ColdFusion / 8 / htmldocs / ... )
Exactement - de () est "Evaluation de retard" - et c'est probablement la partie la plus déroutante de l'utilisation de IIF (). Par défaut, chaque clause d'IIF () est évaluée (comme dans la fonction Evaluate ()). Si ce n'est pas ce que vous voulez, vous devez utiliser de () - mais dans ce cas, ce sont des expressions simples, donc cela n'a pas d'importance. Cela ne fera pas de mal à l'utiliser - mais ce n'est pas nécessaire.
Je préfère personnellement quelque chose de plus dans les lignes de ceci:
Si vous recherchez un code concis, vous pouvez également prendre une étape plus loin que les autres exemples, en tirant parti de l'évaluation des FC des valeurs non nulles comme Naturellement, vous serez sacrifier une petite clarté, mais c'est le compromis pour un code plus compact. P> P> true code>:
Quel est le problème avec ce que vous avez? Ligne simple! = Élégant.
Cela dépend de savoir si vous pensez concis == élégant. Les opinions varient.
@anon, apparemment, vous n'avez pas découvert l'opérateur ternaire que de nombreuses langues soutiennent.