8
votes

Que pouvez-vous faire dans ColdFusion dans une seule ligne?

Y a-t-il une façon d'écrire cette logique dans une seule ligne de code élégante? XXX


3 commentaires

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.


5 Réponses :


2
votes

Comme Neil dit, c'est bien comme ça. Si vous voulez vraiment une seule ligne, vous pouvez en faire un cfscript avec un opérateur ternaire, comme: xxx

n'a pas testé ce code, mais cela devrait fonctionner.


0 commentaires

30
votes

Coldfusion 9:

<!--- Syntax: IIf(condition, trueStatement, falseStatement) --->
<cfset width = IIf((ThumbnailWidth EQ 0), 75, ThumbnailWidth) />


3 commentaires

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.



6
votes

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): xxx

Vous pouvez également utiliser Fonction IIF () - Ça va Faites le truc: xxx

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: xxx

Ce dernier formulaire est souvent utilisé pour maintenir une disposition HTML propre (ER) tout en injectant du code dynamique.


3 commentaires

Je crois que iif () nécessite l'utilisation de de () .


@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.



1
votes

Je préfère personnellement quelque chose de plus dans les lignes de ceci: xxx


0 commentaires

2
votes

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 true : xxx

Naturellement, vous serez sacrifier une petite clarté, mais c'est le compromis pour un code plus compact.


0 commentaires