Konditionaloperator in Velocity
-
12-09-2019 - |
Frage
Gibt es eine Möglichkeit ternäre Operatoren in Geschwindigkeit zu tun? Dies ist, was würde ich tun:
#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))
Statt klobig if-else
#if ($args.get(0) == "")
#set ($name = "default")
#else
#set ($name = $args.get(0))
#end
Irgendwelche Ideen?
Lösung
Aus der Erfahrung und das Lesen der VTL Referenz gibt es keine Möglichkeit um dies zu tun. Wenn Sie viele Aufgaben wie dieser muss vielleicht könnten Sie sehen Ihre eigenen velocimacro zu definieren, um zu versuchen und zu vermeiden Wiederholung der, wenn sonst.
Zum Beispiel, wenn das Makro nur eine einzelne Zeichenfolge druckt könnten Sie wie folgt vor:
#set ($name = "#condOpt($args.get(0), "default")")
Die doppelten Anführungszeichen um den Makroaufruf sind wichtig, da das bedeutet, die RHS des #set analysiert wird.
Andere Tipps
landete ich tun, wie du gesagt, Mark:
#macro(condOp $check, $default)
#if ($check == "")
$default
#else
$check
#end
#end
Und dann kann ich es wie so nennen:
#set ($name = "#condOp($args.get(0), 'default')")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow