2015-04-28 6 views
20

मैं सिर्फ उत्सुक हूं अगर स्विफ्ट PHP या स्थिर की तरह गतिशील है, मेरा मतलब है कि मैं एप्लिकेशन चलाते समय कक्षाएं उत्पन्न कर सकता हूं?स्विफ्ट एक गतिशील या स्थैतिक भाषा है?

+0

http://stackoverflow.com/questions/24008234/swift-language-statically- या- गतिशील रूप से- डिस्प्लेटेड टिप्पणी के बारे में यह स्थिर और गतिशील –

उत्तर

34

यह स्थैतिक - बहुत स्थिर है। संकलक के पास संकलन समय पर सभी कक्षाओं और कार्यों के बारे में सभी जानकारी होनी चाहिए। आप मौजूदा वर्ग (extension के साथ) "विस्तार" कर सकते हैं, लेकिन फिर भी आपको उस एक्सटेंशन में संकलित समय पर पूरी तरह से परिभाषित करना होगा।

उद्देश्य-सी गतिशील है, और जब से, वास्तविक जीवन में, आप संभवतः कोको की उपस्थिति में स्विफ्ट का उपयोग करेंगे, आप उद्देश्य-सी रनटाइम का उपयोग स्विफ्ट क्लास में इंजेक्ट/स्विजल विधियों के लिए कर सकते हैं जो खुलासा हुआ है उद्देश्य सी। आप यह भी कर सकते हैं भले ही आप स्विफ्ट भाषा में बात कर रहे हों। लेकिन स्विफ्ट स्वयं स्थैतिक है, और वास्तव में उद्देश्य-सी-प्रकार गतिशीलता के उपयोग को कम करने या समाप्त करने के लिए स्पष्ट रूप से डिज़ाइन किया गया है।

+1

दोनों की तरह दिखता है मुझे php पता नहीं है, लेकिन मुझे रूबी पता है, और सामान्य रूप से मैं कहूंगा कि स्विफ्ट रूबी के बिल्कुल विपरीत है। रुबी में "बतख टाइपिंग" है; स्विफ्ट में सख्त संकलन-समय टाइपिंग है। रूबी रनटाइम पर अपनी कक्षाओं को परिभाषित करता है (कक्षा परिभाषाएं स्वयं निष्पादन योग्य बयान हैं); स्विफ्ट संकलन समय पर अपनी कक्षाओं को परिभाषित करता है। रूबी एक वर्ग खोल सकती है और गतिशील रूप से बनाई गई विधियों को इंजेक्ट कर सकती है; स्विफ्ट नहीं कर सकता – matt

1

आम तौर पर आप स्थिर भाषा कभी नहीं कहते हैं। आप स्थिर प्रकार की भाषा या गतिशील प्रकार की भाषा कह सकते हैं, और आप मजबूत प्रकार की भाषा भी कह सकते हैं या नहीं।

तो जावा एक स्थिर प्रकार की भाषा के साथ ही मजबूत प्रकार की भाषा है, क्योंकि कंपाइलर में स्वचालित रूप से प्रकार का पता लगाने की कोई क्षमता नहीं है, इसलिए यह स्थैतिक है, और प्रकार दृढ़ता से प्रतिबंधित है, इसलिए यह एक मजबूत प्रकार की भाषा भी है।

और जावास्क्रिप्ट एक गतिशील प्रकार की भाषा और गैर-मजबूत प्रकार की भाषा दोनों है। चूंकि कंपाइलर में रनटाइम के दौरान प्रकार का पता लगाने की क्षमता होती है, और प्रकार सख्ती से प्रतिबंधित नहीं होता है।

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

आशा है कि यह सहायक होगा।

+0

क्या यह उपरोक्त @ मैट के उत्तर से सीधे विरोधाभासी है? –

3

स्विफ्ट स्वयं, स्थिर रूप से टाइप किया गया है। जब कोको के साथ उपयोग किया जाता है, तो आप उद्देश्य-सी रनटाइम लाइब्रेरी तक पहुंच प्राप्त करते हैं जो आपको गतिशील कक्षाओं, संदेशों और सभी का उपयोग करने की क्षमता देता है। इसका मतलब यह नहीं है कि भाषा ही गतिशील रूप से टाइप की गई है। आप सी या किसी अन्य भाषा के साथ ऐसा कर सकते हैं जो libobjc.A.dylib का उपयोग कर पुल को सी का समर्थन करता है।

0

केवल जब आप उद्देश्य सी पुस्तकालय का उपयोग करना चाहते हैं। स्विफ्ट स्वाभाविक रूप से स्थिर टाइप है। वे आपको इंटरफेस देते हैं ताकि आप धीरे-धीरे तेजी से आगे बढ़ सकें।

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