2013-01-17 18 views
6

जूलिया में संग्रह पर कई सामान्य संचालन जैसे सेट से किसी आइटम को हटाने का नाम बदल दिया गया था, पुराने कार्यों को बहिष्कृत कर दिया गया था।जूलिया में संग्रहों पर इन आम परिचालनों का नाम बदल दिया गया था?

उदाहरण के लिए

,

del(IntSet(1,2,3), 1) 

अब एक चेतावनी

WARNING: del is deprecated, use delete! instead. 

नाम बदलकर कार्यों में से कुछ पॉप अप होता है:

@deprecate push  push! 
@deprecate pop   pop! 
@deprecate grow  grow! 
@deprecate enqueue  unshift! 
@deprecate unshift  unshift! 
@deprecate shift  shift! 
@deprecate insert  insert! 
@deprecate del   delete! 
@deprecate del_all  empty! 

क्यों इन नाम दिया गया? एक जोड़ रहा है! एक संग्रह की स्थिति को बदलने वाले कार्यों के लिए अब एक सम्मेलन?

+0

मुझे जूलिया के साथ कोई अनुभव नहीं है (अब इससे पहले नहीं सुना था) लेकिन मैंने अन्य भाषाओं में '!' प्रत्यय देखा है। एक कार्यात्मक प्रोग्रामिंग परिप्रेक्ष्य से '!' एक समारोह को इंगित करता है जहां प्राथमिक उद्देश्य एक पारस्परिक दुष्प्रभाव है। एक नज़र में जूलिया को दिमाग में पेरेलेल प्रसंस्करण के साथ सौंपा जाना प्रतीत होता है और उत्परिवर्तन में समेकन में जटिलता बढ़ जाती है: इसलिए '!' मजबूत होगा कि उस विशेष कॉल को उस संबंध में अतिरिक्त देखभाल की आवश्यकता होगी (और एक वैकल्पिक कार्य बेहतर विकल्प हो सकता है) । –

उत्तर

9

आप julia-dev धागा here पढ़ सकते हैं। असल में, यह केवल नियम arrays दस्तावेज़ में वर्णित सम्मान करने के लिए बदल रहा है:,

पिछले समारोह को भरने !, में यह बजाय एक नया एक के निर्माण की एक मौजूदा सरणी को संशोधित करता है कि अलग है। एक सम्मेलन के रूप में, इस संपत्ति के साथ फ़ंक्शन का नाम विस्मयादिबोधक बिंदु से समाप्त होता है। ये कार्यों को कभी-कभी "उत्परिवर्तन" फ़ंक्शंस या "इन-प्लेस" फ़ंक्शंस कहा जाता है।

FWIW मुझे लगता है कि कम से कम Base के लिए यह एक अच्छा विचार है।

7

! का उपयोग उत्परिवर्तन को इंगित करने के लिए हमेशा एक स्पष्ट सम्मेलन था, यह हाल ही में ठीक से लागू नहीं किया गया था। push के लिए, कोई आसानी से तर्क दे सकता है कि यह आवश्यक नहीं है। लेकिन push! का उपयोग push के बजाय यह स्पष्ट करता है कि sort! का उपयोग करते समय उत्परिवर्तन इस मामले में उत्परिवर्तन हो रहा है, जो कि sort से बहुत अलग है।

यह विस्मयादिबोधक चिह्न सम्मेलन योजना और रूबी और शायद कई अन्य भाषाओं में मौजूद है। यह आर जैसी भाषा में मौजूद नहीं है जो किसी को भाषा के अंतर्निहित गलतियों के बिना सहभागिता के बिना उत्परिवर्तन करने की अनुमति नहीं देगा।