有没有办法做到三元运营速度? 这是我想做什么:

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))

代替矮胖的if-else

#if ($args.get(0) == "")
    #set ($name = "default")
#else
    #set ($name = $args.get(0))
#end

任何想法?

有帮助吗?

解决方案

从经验和读取 VTL参考没有办法去做这个。如果你有很多任务的这样也许你可以看一下定义自己的Velocimacro,以尽量避免重复的if else。

例如,如果宏只打印一个字符串,你可以执行以下操作:

#set ($name = "#condOpt($args.get(0), "default")")

周围的宏调用双引号是重要的,因为这意味着#SET的RHS被解析。

其他提示

我落得这样做就像你说的,马克:

#macro(condOp $check, $default)
    #if ($check == "")
        $default
    #else
        $check
    #end
#end

然后,我可以调用它像这样:

#set ($name = "#condOp($args.get(0), 'default')")
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top