के रूप में नाथन ने कहा, आप का उपयोग करना चाहिए:
#set ($myMap = {})
नया नक्शा बनाएं और एक चर निर्दिष्ट करने के लिए।
अब, put
कॉल मुद्रित क्यों है।
कोई भी चीज जो एक निर्देश के अंदर नहीं है, #set(not printed)
या #if(not printed)
या #foreach(again not printed)
की तरह, मुद्रित किया जाता है, मुक्त पाठ, चर सहित, और विधि कहता है।
वेग $myMap.get('mykey')
और $myMap.put('key', 'value')
के बीच भेद नहीं कर सकते, तो put
कॉल का परिणाम मुद्रित किया जाता है।
जब भी कुछ ठीक से मूल्यांकन नहीं किया जा सकता है क्योंकि एक चर परिभाषित नहीं है या कहीं लाइन एक विधि रिटर्न null
, कोड है कि मूल्यांकन किया जा करने में विफल साथ उत्पादन में सचमुच फेंक दिया जाता है।
put
विधि राज्यों के प्रलेखन के रूप में, फ़ंक्शन उस कुंजी के लिए संग्रहीत पिछले मान को वापस करता है, या null
यदि कोई मान बिल्कुल सेट नहीं किया गया है।
इसे सब कुछ सारांशित करना, उस पंक्ति को मुद्रित करना सामान्य बात है।
इस सिद्धांत आज़माने के लिए, आप यह कर सकते हैं:
#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 टी मुद्रित:
के परिणाम स्टोर करें $!myMap.put('key', 'value')
मैं के बाद से दूसरा एक अभी भी कुछ प्रिंट होगा जब आप मौजूदा मूल्य बदल रहे हैं, पहले एक सलाह देते हैं: #set ($discard = $myMap.put('key', 'value')
चुप विधि कॉल का उपयोग करें: एक अस्थायी चर में समारोह ।
स्रोत
2013-05-19 01:21:55
ओह, मैंने शायद हर समय गलती की है। #set ($ myMap = {}) + $ myMap.put ("mykey1", "myvalue") आउटपुट> $ myMap बनाता है।रखो ("mykey1", "myvalue")। मैं बस Velocity के साथ शुरू किया। मैंने सोचा कि जब आदेश आउटपुट का हिस्सा है, तो आदेश स्वीकार नहीं किया गया/मान्यता प्राप्त नहीं था। क्या यह एक बग है या अगर सबकुछ ठीक से चल रहा है तो कमांड आउटपुट का हिस्सा क्यों है? – Wagner