2017-01-30 4 views
20

मैं जूलिया v0.6 में नए प्रकार के सिस्टम को समझने के लिए कोशिश कर रहा हूँ, release notes पढ़ने के आधार पर where`।`में समारोह परिभाषाओं में जूलिया-0.6

किसी को भी मुझे बता सकते हैं क्या

inv(M::Matrix{T}) where T <: AbstractFloat 

मुझे देता है जो क्लासिक

inv{T<:AbstractFloat}(M::Matrix{T}) 

का उपयोग करने से अलग है?

+1

मुझे आपके प्रश्न का उत्तर नहीं पता है, लेकिन मैं उत्सुक हूं कि नया वाक्यविन्यास पुरानी जगह लेता है या इसके अतिरिक्त आता है। – DNF

उत्तर

20

नई वाक्य रचना एक ही बात का मतलब है, लेकिन अधिक परिस्थितियों में इस्तेमाल किया जा सकता है और अधिक निर्माणों व्यक्त कर सकते हैं और वैचारिक अस्पष्टता के एक नंबर, विशेष रूप से पैरामीट्रिक कंस्ट्रक्टर्स आसपास समाप्त करता है। पुराना वाक्यविन्यास 0.6 में बहिष्कृत किया जाएगा और पुराने सिंटैक्स में से कुछ को 1.0 में अलग-अलग अर्थों के साथ पुनः दावा किया जाएगा। मूल रूप से, F{T}(args...) साथ समस्या यह है कि F{T} हिस्सा धारणात्मक अस्पष्ट है - पार्सर जानता है इसका क्या मतलब है, लेकिन यह अक्सर मनुष्य के लिए भ्रमित कर रहा है:

  • अलगाव F{T} में प्रकार पैरामीटर T साथ पैरामीट्रिक प्रकार F का मतलब है।

  • कोष्ठक इसके बाद, नहीं एक विधि परिभाषा के भाग के रूप, F{T}(args...)args... तर्कों को प्रकार F{T} लागू करने के लिए एक समारोह के रूप, आम तौर पर प्रकार F{T} का एक उदाहरण के निर्माण का मतलब है।

  • कोष्ठक इसके बाद और बराबर होती है, अर्थात F{T}(args...) = expr में के रूप में एक विधि परिभाषा के भाग के रूप में, यह एक विधि T औपचारिक तर्क args... और परिभाषा expr प्रकार मानकों के साथ, F एक समारोह के रूप के लिए परिभाषित करने के लिए इसका मतलब है।

    • वर्तमान क्षेत्र में T की ठोस मूल्य के लिए F{T} के लिए एक विधि जोड़ना:

    विशेष रूप से, इन दोनों में से किसी के लिए कोई वाक्य रचना है।

  • प्रत्येक पैरामीट्रिक मान T के लिए F{T} पर कोई विधि जोड़ना।

यह स्थिति जूलिया 0.5 में कन्स्ट्रक्टर सिंटैक्स का कारण बनती है और इससे पहले कि अधिक जरूरी और अनजान हो। जूलिया 1.0 प्रकार पैरामीटर और कन्स्ट्रक्टर दोनों सिद्धांतों के बाद अधिक सहज और सुसंगत होंगे:

  • किसी विधि को परिभाषित करने के लिए उपयोग किए गए वाक्यविन्यास हमेशा इसे कॉल करने के लिए उपयोग किए गए वाक्यविन्यास से मेल खाते हैं।
  • F{T} वाक्य रचना हमेशा पैरामीटर T साथ प्रकार F को दर्शाता है।
  • प्रकार पैरामीटर हमेशा where खंड द्वारा शुरू कर रहे हैं।

0 में परिवर्तनों की एक और विस्तृत व्याख्या होगी।6 रिलीज हो गया है, शायद 0.6 रिलीज की हाइलाइट्स पर एक ब्लॉग पोस्ट में।

+3

विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, यह पहले से ही बहुत उपयोगी है। अगर मैं सही ढंग से समझता हूं तो इसका मतलब है कि पुराने वाक्यविन्यास को नए, स्पष्ट वाक्यविन्यास द्वारा प्रतिस्थापित किया गया है? मुझे लगता है कि यह वास्तव में एक अच्छा वाक्यविन्यास परिवर्तन की तरह दिखता है। –

+0

मैंने कुछ उदाहरण जैसे 'f (x :: T) देखा है जहां टी = x' चारों ओर तैर रहा है। क्या यह अनुशंसित उपयोग है, और इसकी पठनीयता या स्पष्टता के बारे में कोई चिंता है? – DNF

+3

बिल्कुल उस वाक्यविन्यास की पठनीयता के बारे में कुछ चल रही बहसें हुई हैं, और यह अभी तक पत्थर में सेट नहीं है, इसलिए हम देखेंगे कि अंतिम 0.6 रिलीज़ में क्या होता है। मुझे इस प्रश्न और उत्तर को आना और संपादित करना पड़ सकता है :) – StefanKarpinski

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