2011-02-15 85 views

回答

38

你可以做

#set($value = "#if($flag)red#{else}blue#end") 
+0

我試過你的解決方案,它工作。但是,它需要#set指令似乎很奇怪。所以,我搜索了文檔「#{else}」,並發現這個概念清晰地記錄下來 - 易於理解但難以注意。 – KSev 2014-05-13 22:24:07

5

還擁有可重複使用的宏的方法:

#macro(iif $cond $then $else)#if($cond)$then#else$else#end#end 

然後

#define ($value) 
#iif("$a > $b", $a, "$b") 
#end 

注意速度文檔指出,使用宏涉及到一些對性能的影響。

11

您不需要#macro或#set指令。關鍵是對#else指令使用大括號。

#if($plural)were#{else}was#end 

doc(幾乎在條件判斷部分的結尾):

還有一個有用的注意事項。當您希望在#else指令後立即包含文本時,您需要使用大括號將括號直接指向該指令以區別於以下文本。 (任何指令都可以用大括號分隔,儘管這對#else最有用)。

注意:不管醫生說什麼,因爲我發現,可能有必要使用一個簡單的內聯的if語句時添加大括號。

#if($includePrefix)Affected #{end}Inspection