2015-11-10 10 views
8

मैंने स्विफ्ट में map फ़ंक्शन का उपयोग उप-दृश्यों के समूह पर फिर से करने के लिए किया और उन्हें पर्यवेक्षण से हटा दिया।स्विफ्ट में इस अंडरस्कोर का क्या अर्थ है?

self.buttons.map { $0.removeFromSuperview() } 

जब मैंने स्विफ्ट 1.x से 2.0 तक अपग्रेड किया, तो एक्सकोड ने चेतावनी दी कि मानचित्र से वापसी मूल्य अप्रयुक्त था। इसलिए मैं यह let x = ... साथ सौंपा और मैं एक और चेतावनी है:

enter image description here

तो मैं Xcode मेरे लिए चेतावनी को ठीक करते हैं और इसकी मुझे इस दिया:

_ = self.buttons.map { $0.removeFromSuperview() }

क्या महत्व है अंडरस्कोर जब कोई विधि पैरामीटर के संदर्भ में नहीं है? इसका क्या मतलब है?

संपादित करें:

मुझे पता है कि जब एक विधि पैरामीटर अनाम है, अंडरस्कोर अपनी जगह लेता है। मैं एक विधि के बीच में अंडरस्कोर के बारे में बात कर रहा हूं। यह एक संदेश का हिस्सा नहीं है।

+1

इस प्रश्न का उत्तर यहां दिया गया। http://stackoverflow.com/questions/30876068/what-is-in-swift-telling-me और यहां http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-wift - संदर्भ –

+0

स्विफ्ट में अंडरस्कोर के बारे में हर एक अन्य प्रश्न एक विधि नाम के मामले पर चर्चा करता है, जहां अंडरस्कोर आंतरिक और बाहरी पैरामीटर नामों की आवश्यकता को समाप्त करता है। मैं एक विधि के बीच में अंडरस्कोर देख रहा हूँ। प्रासंगिक रूप से, एक बड़ा अंतर। – Moshe

+0

संभावित डुप्लिकेट [इस मामले में अंडरस्कोर का क्या अर्थ है?] (Http://stackoverflow.com/questions/32656095/what-does-the-underscore-mean-in-this-case) – Moritz

उत्तर

6

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

+0

थोड़ा पाइथन याद दिलाता है वैसे ... –

+0

पायथन इस बात पर परवाह नहीं करेगा कि आप रिटर्न वैल्यू का उपयोग नहीं कर रहे हैं और बस इसे एक वैरिएबल को असाइन किए बिना फ़ंक्शन को चलाने दें। –

+0

क्या मैं सही ढंग से समझता हूं कि यह (दाएं तरफ से अंडरस्कोर चर के लिए मूल्य असाइन करना) केवल संकलन चेतावनी को छिपाने के लिए किया जाता है? – Pavel

3

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

-1

यदि मुझे उद्देश्य-सी से लिया गया यह गलत नहीं है। जब आपने ऐप में अपने पॉइंटर का "उपयोग" नहीं किया था, तो आपको एक चेतावनी मिलेगी। स्विफ्ट 2 में मेरा मानना ​​है कि उन्होंने कुछ इसी तरह लागू करने की कोशिश की।

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