2013-05-06 5 views
8

मुझे कुछ समस्याएं हैं जो वेग-कुंजी-मानचित्र का उपयोग वेग में करते हैं।वेग टेम्पलेट इंजन - कुंजी-मूल्य-मानचित्र

किसी के पास इस कार्यक्षमता का एक उदाहरण है?

#set($myMap = {}) 

इसके अलावा, सुनिश्चित करें कि आप वेग का आधुनिक संस्करण उपयोग कर रहे हैं:

$myMap ={} 

$myMap.put("mykey1", "myvalue") 
$myMap.delete("mykey1") 
$myMap.getValue("mykey1") 

उत्तर

3

तुम क्या कर का प्रयास किया। प्राचीन लोगों में वीटीएल में नक्शा वाक्यविन्यास नहीं था।

+0

ओह, मैंने शायद हर समय गलती की है। #set ($ myMap = {}) + $ myMap.put ("mykey1", "myvalue") आउटपुट> $ myMap बनाता है।रखो ("mykey1", "myvalue")। मैं बस Velocity के साथ शुरू किया। मैंने सोचा कि जब आदेश आउटपुट का हिस्सा है, तो आदेश स्वीकार नहीं किया गया/मान्यता प्राप्त नहीं था। क्या यह एक बग है या अगर सबकुछ ठीक से चल रहा है तो कमांड आउटपुट का हिस्सा क्यों है? – Wagner

14

के रूप में नाथन ने कहा, आप का उपयोग करना चाहिए:

#set ($myMap = {}) 

नया नक्शा बनाएं और एक चर निर्दिष्ट करने के लिए।

अब, put कॉल मुद्रित क्यों है।

  1. कोई भी चीज जो एक निर्देश के अंदर नहीं है, #set(not printed) या #if(not printed) या #foreach(again not printed) की तरह, मुद्रित किया जाता है, मुक्त पाठ, चर सहित, और विधि कहता है।

  2. वेग $myMap.get('mykey') और $myMap.put('key', 'value') के बीच भेद नहीं कर सकते, तो put कॉल का परिणाम मुद्रित किया जाता है।

  3. जब भी कुछ ठीक से मूल्यांकन नहीं किया जा सकता है क्योंकि एक चर परिभाषित नहीं है या कहीं लाइन एक विधि रिटर्न null, कोड है कि मूल्यांकन किया जा करने में विफल साथ उत्पादन में सचमुच फेंक दिया जाता है।

  4. put विधि राज्यों के प्रलेखन के रूप में, फ़ंक्शन उस कुंजी के लिए संग्रहीत पिछले मान को वापस करता है, या null यदि कोई मान बिल्कुल सेट नहीं किया गया है।

  5. इसे सब कुछ सारांशित करना, उस पंक्ति को मुद्रित करना सामान्य बात है।

इस सिद्धांत आज़माने के लिए, आप यह कर सकते हैं:

#set ($myMap = {}) 
$myMap.put('key', 'first value') 
$myMap.put('key', 'second value') 
$myMap.get('key') 

यह प्रिंट किया जाएगा:

$myMap.put('key', 'first value') 
first value 
second value 

आप ऐसा कर सकते दो बातें कर रहे हैं कि लाइन 'isn टी मुद्रित:

  1. के परिणाम स्टोर करें $!myMap.put('key', 'value')

मैं के बाद से दूसरा एक अभी भी कुछ प्रिंट होगा जब आप मौजूदा मूल्य बदल रहे हैं, पहले एक सलाह देते हैं: #set ($discard = $myMap.put('key', 'value')

  • चुप विधि कॉल का उपयोग करें: एक अस्थायी चर में समारोह ।

  • संबंधित मुद्दे