ट्रैक
/
Swift
Swift
/
सिलेबस
/
inout पैरामीटर
in

inout पैरामीटर में Swift

1 अभ्यास

inout पैरामीटर के बारे में

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

इन-आउट पैरामीटर इस्तेमाल करने के लिए प्रोग्रामर को तीन बातों का ध्यान रखना होता है:

  1. फंक्शन बनाते समय पैरामीटर के टाइप एनोटेशन में : और टाइप के नाम के बीच inout कीवर्ड लिखकर इन-आउट पैरामीटर को साफ़-साफ़ चिह्नित करना होगा।
  2. इन-आउट पैरामीटर को दी जाने वाली वैल्यू को वेरिएबल के रूप में घोषित करना होगा, स्थिरांक के रूप में नहीं। वह किसी लिटरल के रूप में भी नहीं हो सकती।
  3. फंक्शन को कॉल करते समय वेरिएबल के नाम से पहले & लगाना होगा, जो साफ़ बताता है कि इसे बदला जा सकता है।

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

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
इन-आउट पैरामीटर से जुड़े कुछ और नियम भी हैं जिनका ध्यान रखना चाहिए।

1. ऐसे फंक्शन के अंदर, जिसमें इन-आउट पैरामीटर हैं, आप उस वेरिएबल का इस्तेमाल नहीं कर सकते जिसे इन-आउट पैरामीटर के रूप में पास किया गया था।
2. एक ही फंक्शन में एक ही वेरिएबल को कई इन-आउट पैरामीटर के रूप में पास नहीं किया जा सकता।
   जैसे, `inoutFunc(&mutVar, &mutVar)` कंपाइल करते समय एरर देता है।
GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

inout पैरामीटर सीखिए