मैं रुबी सीख रहा हूं और मैंने देखा है कि सम्मेलन द्वारा विधि नाम के अंत में एक विस्मयादिबोधक का मतलब है कि विधि किसी भी तरह से self
को संशोधित करती है। self
से तत्व को हटाए जाने के बाद slice!
जैसे विस्मयादिबोधक चिह्न के साथ Array#delete
अंत क्यों नहीं होता है? क्या मुझे कुछ मौलिक याद आ रही है?नामकरण सम्मेलन: अंत में # हटाए गए अंत में कोई विस्मयादिबोधक चिह्न क्यों नहीं है?
10
A
उत्तर
15
Matz (रूबी के मुख्य इंजीनियर) के शब्दों में: (!)
धमाके मतलब यह नहीं है "विनाशकारी" है और न ही इसे की कमी विनाशकारी या तो गैर मतलब है। बैंग साइन का मतलब है "बैंग संस्करण अधिक अपने गैर बैंग समकक्ष से खतरनाक है; देखभाल के साथ संभाल"।
Array#delete
में कम खतरनाक समकक्ष नहीं है, विस्मयादिबोधक की कोई आवश्यकता नहीं है।
4
"बैंग" विधियों का यह अर्थ यह नहीं है कि यह रिसीवर को संशोधित करता है। यह एक विधि का एक संकेत है जो मौजूदा विधि का एक और खतरनाक संस्करण है। रूबी 2.0 बदलने के लिए David A. Black's description अंतर, और response to a request देखें।
यह एक बहुत ही आम गलतफहमी है। बहुत उच्च वोट वाले गलत उत्तर here पर ध्यान दें।
संबंधित मुद्दे
- 1. सीमा (प्रारंभ, अंत) अंत में क्यों शामिल नहीं है?
- 2. हटाए गए एनीमेशन अंत में कैसे हटाएं RowsAtIndexPaths
- 3. अंत में
- 4. अंत में "const" क्यों डालें?
- 5. अंत में ब्लॉक में प्रतीक्षा क्यों नहीं है?
- 6. निकाले गए इंटरफ़ेस नामकरण सम्मेलन
- 7. अंत में ब्लॉक क्यों कोड निष्पादित नहीं करता है?
- 8. पायथन कोशिश-अंत में
- 9. सजावटी में पाइथन नामकरण सम्मेलन
- 10. कर्ल उपयोगकर्ता प्रमाणीकरण में विस्मयादिबोधक चिह्न/पासवर्ड
- 11. अंत में ब्लॉक
- 12. रूबी विधियों में विस्मयादिबोधक चिह्न क्यों उपयोग किए जाते हैं?
- 13. डीएलएल पर विस्मयादिबोधक चिह्न समस्या?
- 14. फेसबुक एपीआई नाम में विस्मयादिबोधक चिह्न गायब
- 15. एक्सीप्से में लाल विस्मयादिबोधक चिह्न Mercurial
- 16. वाईएएमएल में एक विस्मयादिबोधक चिह्न क्या करता है?
- 17. "अंत में" MSBuild
- 18. स्लाइडडाउन अंत में अचानक
- 19. अंत
- 20. जावा अंत में धारा
- 21. अजगर में लाइन अंत
- 22. अंत में अपवाद हैंडलिंग
- 23. 'अंत में' Iterators में ब्लॉक
- 24. नामकरण सम्मेलन?
- 25. ट्राई/अंत में ब्लॉक सवाल
- 26. जावा ग्रहण लाल विस्मयादिबोधक चिह्न
- 27. नामकरण में अंतर क्यों?
- 28. हास्केल घोषणा में विस्मयादिबोधक चिह्न का क्या अर्थ है?
- 29. असेंबली नामकरण सम्मेलन
- 30. नेमस्पेस नामकरण सम्मेलन
मेरा अनुमान है क्योंकि '# delete' केवल हटा सकता है इसलिए इसे ध्वजांकित करने की आवश्यकता नहीं है। '# Upper_case' जैसे कुछ को किसी नए बनाए गए ऑब्जेक्ट को असाइन किया जा सकता है या उपयोग के निर्धारण पर मूल ऑब्जेक्ट को ओवरराइट कर दिया जा सकता है। – ScottJShea
हां, लेकिन # ध्वज के साथ हटाए गए किसी भी क्लोन को निर्दिष्ट तत्व को घटा सकता है (यही वह है जो मुझे ध्वज की अनुपस्थिति के कारण अपेक्षित था) :) –
संभव डुप्लिकेट [रूबी विधियों में विस्मयादिबोधक चिह्न क्यों उपयोग किए जाते हैं?] (Http: //stackoverflow.com/questions/612189/why-are-exclamation-marks-used-in-ruby-methods) –