2011-02-15 22 views
31

शुद्ध जावा में, मैं ऐसा कर सकता है: वेग में जबकिVelocity में/अन्यथा (उर्फ टर्नरी ऑपरेटर) अगर इनलाइन कैसे करें?

value = (a > b) ? a : b; 

, लंबे समय से फार्म होगा:

#if($a > $b)   
    #set($value = $a) 
#else 
    #set($value = $b) 
#end 

वहाँ वेग में एक संक्षिप्त रूप है? मैं एक/अन्यथा इनलाइन करने में सक्षम होना चाहता हूं।

उत्तर

38

आप

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

मैंने आपके समाधान की कोशिश की और यह काम किया। हालांकि, यह अजीब लग रहा था कि इसे #set निर्देश की आवश्यकता है। इसलिए, मैंने "# {else}" के लिए प्रलेखन की खोज की और अवधारणा को स्पष्ट रूप से दस्तावेज किया - समझने में आसान लेकिन नोटिस करना मुश्किल था। – KSev

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($includePrefix)Affected #{end}Inspection 
संबंधित मुद्दे