opérateur conditionnel à la vitesse
-
12-09-2019 - |
Question
Y at-il un moyen de faire des opérateurs ternaires en vitesse? Voilà ce que je voudrais faire:
#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))
Au lieu de chunky if-else
#if ($args.get(0) == "")
#set ($name = "default")
#else
#set ($name = $args.get(0))
#end
Toutes les idées?
La solution
De l'expérience et la lecture VTL Référence il n'y a aucun moyen pour faire ça. Si vous aviez beaucoup de devoirs comme celui-ci peut-être vous pouvez regarder la définition de votre propre Velocimacro pour essayer d'éviter de répéter le cas d'autre.
Par exemple, si la macro imprime une seule chaîne que vous pourrait faire ce qui suit:
#set ($name = "#condOpt($args.get(0), "default")")
Les guillemets doubles autour de l'appel de macro sont importants, car cela signifie que l'ERS de l'#set est analysé.
Autres conseils
J'ai fini par faire comme vous l'avez dit, Mark:
#macro(condOp $check, $default)
#if ($check == "")
$default
#else
$check
#end
#end
Et puis je peux l'appeler comme ceci:
#set ($name = "#condOp($args.get(0), 'default')")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow