है हाँ और नहीं ...
हालांकि, अभी भी एक भेद है। एक सीपीयू में पूर्णांक जोड़ने, फ़्लोट्स को गुणा करने और यहां तक कि वेक्टर क्रॉस उत्पादों को लेने जैसे कार्यों के लिए देशी निर्देश हैं, लेकिन रीसेट या खोज सूचियों को शामिल करने जैसे नहीं। जब लोग किसी भाषा के प्रकारों को "प्राइमेटिवली" नाम देते हैं, तो उनमें से एक बात यह है कि वे प्रकार हैं जिनके लिए कंपाइलर अंतर्निहित CPU आर्किटेक्चर में हुक प्रदान करता है, ताकि आप उन प्रकार के साथ जो चीजें करते हैं, सीधे सीपीयू निर्देश। (यह है, इसलिए जैसे "दो पूर्णांकों जोड़ें" संचालन वस्तु लुकअप और फ़ंक्शन कॉल में झमेले में नहीं है।)
स्विफ्ट अभी भी उस गौरव प्राप्त है - Int
और Float
जैसे कुछ मानक पुस्तकालय प्रकार कर रहे हैं विशेष हैं, जिसमें वे नक्शा बुनियादी सीपीयू संचालन के लिए। (और स्विफ्ट में, संकलक सीधे उन परिचालनों तक पहुंचने के लिए किसी अन्य माध्यम की पेशकश नहीं करता है।)
कई अन्य भाषाओं के साथ अंतर यह है कि स्विफ्ट के लिए, "आदिम" प्रकारों के बीच अंतर और अन्यथा एक कार्यान्वयन विवरण है मानक पुस्तकालय, भाषा की "विशेषता" नहीं।
बस इस विषय में कुछ और पर घूमना करने के लिए ...
जब लोग तार कई भाषाओं में एक "आदिम" प्रकार होने के बारे में बात करते हैं, उस शब्द की एक अलग अर्थ है - तार का एक स्तर हैं पूर्णांक और फ्लोट की तुलना में सीपीयू से आगे अमूर्तता।
अन्य भाषाओं में स्ट्रिंग्स "आदिम" होने का अर्थ आम तौर पर सी या जावा में ऐसा कुछ होता है: कंपाइलर का एक विशेष मामला है जहां उद्धरण में कुछ डालने के परिणाम प्रोग्राम बाइनरी में बनने वाले कुछ डेटा में होते हैं, और जगह कोड जहां आपने लिखा था कि उस डेटा पर पॉइंटर प्राप्त करना संभवतः किसी प्रकार के ऑब्जेक्ट इंटरफ़ेस में लपेटा गया है ताकि आप इसके साथ उपयोगी टेक्स्ट प्रोसेसिंग कर सकें। (यानी, एक स्ट्रिंग शाब्दिक है।) हो सकता है कि कंपाइलर में विशेष मामले भी हों ताकि आप उन टेक्स्ट प्रोसेसिंग प्रक्रियाओं में से कुछ के लिए आसान शॉर्टकट प्राप्त कर सकें, जैसे +
संगतता के लिए।
स्विफ्ट में, String
"आदिम" में है कि यह मानक स्ट्रिंग मानक पुस्तकालय में सभी पाठ संबंधित कार्यों द्वारा इस्तेमाल किया प्रकार है। लेकिन कोई कंपाइलर जादू नहीं है जो आपको अपने स्वयं के स्ट्रिंग प्रकार बनाने से रोकता है जिसे अक्षर के साथ बनाया जा सकता है या ऑपरेटरों के साथ संभाला जा सकता है। तो फिर, स्विफ्ट में "primitives" और उपयोगकर्ता प्रकार के बीच बहुत कम अंतर है।
लेकिन यदि मानक पुस्तकालय में 'Int' लागू किया गया है तो इसे किसी भी "primitives" पर भरोसा करना है। उन प्राइमेटिव क्या हैं? अगर मैं अपना खुद का 'इंट' लागू करना चाहता हूं तो क्या होगा? उदाहरण के लिए मैं एक आदिम 32-बिट संख्या का प्रतिनिधित्व कैसे करूं? – algrid
उत्तर पर वापस देखें: * "और स्विफ्ट में, कंपाइलर उन परिचालनों तक सीधे पहुंचने के लिए किसी अन्य माध्यम की पेशकश नहीं करता है।" * यदि आप [ओपन सोर्स] (https://github.com/apple] पर देखते हैं मानक लाइब्रेरी के लिए/स्विफ्ट/पेड़/fa2f2bd4577e536130f9298fabfd2960a357693c/stdlib/public/core), आप देखेंगे कि "आदिम" प्रकारों में से कई 'बिल्टिन' नामस्थान के माध्यम से संकलक में हुक से जुड़ते हैं। इस तरह की चीजें बुनियादी सीपीयू निर्देशों के रास्ते पर चरण 1 है जो मैंने इस उत्तर में बात की थी, और आईआईआरसी स्विफ्ट कंपाइलर मानक पुस्तकालय के बाहर कोड के लिए उपलब्ध नहीं कराता है। – rickster