在純Java,我可以這樣做:在速度如何在Velocity中嵌入if/otherwise(又名三元運算符)?
value = (a > b) ? a : b;
然而,從長遠的形式是:
#if($a > $b)
#set($value = $a)
#else
#set($value = $b)
#end
是否有速度的縮寫形式?我希望能夠做到/否則內聯。
在純Java,我可以這樣做:在速度如何在Velocity中嵌入if/otherwise(又名三元運算符)?
value = (a > b) ? a : b;
然而,從長遠的形式是:
#if($a > $b)
#set($value = $a)
#else
#set($value = $b)
#end
是否有速度的縮寫形式?我希望能夠做到/否則內聯。
你可以做
#set($value = "#if($flag)red#{else}blue#end")
還擁有可重複使用的宏的方法:
#macro(iif $cond $then $else)#if($cond)$then#else$else#end#end
然後
#define ($value)
#iif("$a > $b", $a, "$b")
#end
注意速度文檔指出,使用宏涉及到一些對性能的影響。
您不需要#macro或#set指令。關鍵是對#else指令使用大括號。
#if($plural)were#{else}was#end
從doc(幾乎在條件判斷部分的結尾):
還有一個有用的注意事項。當您希望在#else指令後立即包含文本時,您需要使用大括號將括號直接指向該指令以區別於以下文本。 (任何指令都可以用大括號分隔,儘管這對#else最有用)。
注意:不管醫生說什麼,因爲我發現,可能有必要使用一個簡單的內聯的if語句時添加大括號。
#if($includePrefix)Affected #{end}Inspection
我試過你的解決方案,它工作。但是,它需要#set指令似乎很奇怪。所以,我搜索了文檔「#{else}」,並發現這個概念清晰地記錄下來 - 易於理解但難以注意。 – KSev 2014-05-13 22:24:07