फंक्शन के अंदर के कोड में पैरामीटर को वेरिएबल नहीं, बल्कि स्थिरांक माना जाता है। किसी पैरामीटर की वैल्यू बदलने की कोशिश करने पर कंपाइल के समय एरर मिलती है। अगर किसी फंक्शन को किसी पैरामीटर की वैल्यू बदलनी है, तो उसे इन-आउट पैरामीटर इस्तेमाल करना पड़ता है, ताकि साफ़ पता चले कि यह वैल्यू बदली जा सकती है।
इन-आउट पैरामीटर इस्तेमाल करने के लिए प्रोग्रामर को तीन बातों का ध्यान रखना होता है:
: और टाइप के नाम के बीच inout कीवर्ड लिखकर इन-आउट पैरामीटर को साफ़-साफ़ चिह्नित करना होगा।& लगाना होगा, जो साफ़ बताता है कि इसे बदला जा सकता है।जब यह सब किया जाता है, तो फंक्शन इन-आउट पैरामीटर की एक अंदरूनी कॉपी बनाता है, फंक्शन के अंदर के कोड में बताए अनुसार उसे बदलता है, और फिर फंक्शन के लौटने पर बदली हुई वैल्यू को उसी वेरिएबल में वापस कॉपी कर देता है जो पास किया गया था।
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)` कंपाइल करते समय एरर देता है।