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?

War es hilfreich?

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
scroll top