सामान्यतः, !
में समाप्त होने वाली विधियों से संकेत मिलता है कि विधि उस ऑब्जेक्ट को संशोधित करेगी जिसे इसे पर बुलाया गया है। रूबी इन्हें "खतरनाक तरीकों" के रूप में कॉल करता है क्योंकि वे उस स्थिति को बदलते हैं जिसके बारे में किसी और का संदर्भ हो सकता है। यहाँ तार के लिए एक सरल उदाहरण है:
foo = "A STRING" # a string called foo
foo.downcase! # modifies foo itself
puts foo # prints modified foo
हो जाएगा ताकि उत्पादन:
a string
मानक पुस्तकालयों में, स्थानों के एक बहुत आप !
साथ इसी नाम के तरीकों की जोड़ी दिखाई देगी, एक देखते हैं और बिना एक। बिना किसी को "सुरक्षित तरीके" कहा जाता है, और वे पर लागू परिवर्तनों के साथ मूल की प्रतिलिपि वापस लेते हैं, प्रतिलिपि, कैली अपरिवर्तित के साथ। यहाँ !
के बिना एक ही उदाहरण है:
foo = "A STRING" # a string called foo
bar = foo.downcase # doesn't modify foo; returns a modified string
puts foo # prints unchanged foo
puts bar # prints newly created bar
यह आउटपुट:
A STRING
a string
ध्यान रखें कि यह सिर्फ एक सम्मेलन है, लेकिन रूबी वर्गों का एक बहुत यह पालन करें। यह आपको अपने कोड में क्या संशोधित हो रहा है इसका ट्रैक रखने में भी मदद करता है।
पर्याय: बैंग, विस्मयादिबोधक चिह्न – prusswan
स्वीकार किए जाते हैं जवाब http://stackoverflow.com/a/612653/109618 को बदला जाना चाहिए। देखें http://www.wobblini.net/bang.txt और http://www.ruby-forum.com/topic/176830#773946 - "बैंग साइन का अर्थ है" बैंग संस्करण अधिक गैर- बैंग समकक्ष; देखभाल के साथ संभाल लें "" -मैट्स –
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** अफसोस की बात है कि वे नहीं हैं, और इसलिए यह याद करने में एक निराशाजनक व्यायाम बन जाता है कि क्या है और क्या म्यूटेबल नहीं है। –