2011-08-31 8 views
9

विशेष अर्थ यह है कि वे आपको कार्यक्षमता देते हैं जो अन्यथा प्राप्त करना असंभव है, इसलिए वे विशेष रूप से कंपाइलर द्वारा इलाज करते हैं। उदाहरण: 'DelayedInit' - सभी तरीकों आदिस्कैला में सभी विशेष लक्षणों की सूची कहां मिल सकती है?

+0

एक छोटा सा बिंदु: DelayedInit "जादुई" विशेषता, अनुप्रयोग बस इसे का उपयोग करता है। –

+0

'एपी' जेवीएम पर रचनाकारों के अनुकूलन के संबंध में प्रदर्शन कारणों के लिए केवल "जादुई" है। आप इसे 'मुख्य (तर्क: ऐरे [स्ट्रिंग])' विधि देकर आसानी से अपना निष्पादन योग्य गुण बना सकते हैं: उदाहरण के लिए (बहिष्कृत) 'एप्लिकेशन' विशेषता देखें। –

उत्तर

12

वर्तमान में, केवल विशेष लक्षण मैं DelayedInit और Dynamic हैं के बारे में पता कर रहा हूँ की प्रॉक्सी - मुख्य तरीके 'डायनामिक' करने के लिए सभी init कोड परिवर्तित करते हैं।

इन लक्षणों से विरासत में प्राप्त कुछ भी संकलक द्वारा विशेष उपचार प्राप्त करता है, App के साथ, जो DelayedInit subclasses।

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

साथ ही मार्कर लक्षण,, तो कुछ टिप्पणियां कि विशेष रूप से इलाज, scala.annotation और scala.reflect अच्छी जगहों इन खोजने के लिए कर रहे हैं देखते हैं scala पैकेज में भी वहाँ @specialized एनोटेशन और संकलक प्लगइन्स में कई (जैसे सीमांकित निरंतरता के रूप में) ।

10

scala.Singleton भी है।

यह final trait है और कोड लिखते समय सामान्य रूप से उपयोग नहीं किया जा सकता है, लेकिन object Foo जैसे कुछ सिंगलटन का उपयोग करने वाले प्रत्येक व्यक्ति ने इसे अप्रत्यक्ष रूप से उपयोग किया है।

Singleton एक सिंगलटन विस्तार करने के लिए है, इसलिए संकलक द्वारा प्रयोग किया जाता है:

scala> object Foo 
defined module Foo 

scala> Foo.isInstanceOf[Singleton] 
res0: Boolean = true 
संबंधित मुद्दे