https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html
ইন-আউট প্যারামিটার
ফাংশন পরামিতিগুলি ডিফল্টরূপে ধ্রুবক। সেই ফাংশনের মূল অংশ থেকে কোনও ফাংশন প্যারামিটারের মান পরিবর্তন করার চেষ্টা করার ফলে একটি সংকলন-সময় ত্রুটির ফলস্বরূপ। এর অর্থ হ'ল আপনি ভুল করে প্যারামিটারের মান পরিবর্তন করতে পারবেন না। আপনি যদি কোনও প্যারামিটারের মানটি পরিবর্তন করতে কোনও ফাংশন চান এবং ফাংশন কলটি শেষ হওয়ার পরে আপনি সেই পরিবর্তনগুলি বজায় রাখতে চান তবে পরিবর্তে সেই পরামিতিটিকে ইন-আউট প্যারামিটার হিসাবে সংজ্ঞায়িত করুন।
আপনি প্যারামিটারের টাইপের ঠিক আগে ইনআউট কীওয়ার্ডটি রেখে একটি ইন-আউট প্যারামিটার লিখেন। ইন-আউট প্যারামিটারের একটি মান থাকে যা ফাংশনে প্রবেশ করে, ফাংশনটির মাধ্যমে সংশোধিত হয় এবং মূল মানটি প্রতিস্থাপন করতে ফাংশনটির বাইরে চলে যায়। ইন-আউট প্যারামিটারগুলি এবং সম্পর্কিত সংকলক অপ্টিমাইজেশনের আচরণ সম্পর্কে বিশদ আলোচনার জন্য, ইন-আউট প্যারামিটারগুলি দেখুন।
আপনি কেবল ইন-আউট প্যারামিটারের আর্গুমেন্ট হিসাবে একটি ভেরিয়েবল পাস করতে পারেন। আপনি আর্গুমেন্ট হিসাবে ধ্রুবক বা আক্ষরিক মান পাস করতে পারবেন না, কারণ ধ্রুবক এবং আক্ষরিক পরিবর্তন করা যায় না। আপনি যখন কোনও ইন-আউট প্যারামিটারের আর্গুমেন্ট হিসাবে এটি পাস করেন তখন আপনি কোনও এম্পারস্যান্ড (&) সরাসরি কোনও ভেরিয়েবলের নামের আগে স্থাপন করেন, যাতে এটি ফাংশনটির মাধ্যমে সংশোধন করা যায় indicate
বিঃদ্রঃ
ইন-আউট প্যারামিটারগুলির ডিফল্ট মান থাকতে পারে না এবং বৈকল্পিক পরামিতিগুলিকে ইনআউট হিসাবে চিহ্নিত করা যায় না।
এখানে swapTwoInts ( : :) নামে একটি ফাংশনের উদাহরণ রয়েছে , যার দুটি এবং ইন-আউট পূর্ণসংখ্যা পরামিতি রয়েছে যা a এবং b নামে পরিচিত:
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
অদলবদল ( : :) ফাংশনটি খ এর সাথে খ এর মান এবং একটিতে খ এর মান পরিবর্তন করে। অস্থায়ী A নামক অস্থায়ী ধ্রুবকটিতে a এর মান সংরক্ষণ করে, b এর মান নির্ধারণ করে, এবং তারপরে অস্থায়ীA নির্ধারণ করে ফাংশনটি এই অদলবদল সম্পাদন করে।
মানগুলি অদলবদল করতে আপনি দুটি টাইপ ইন্টের ভেরিয়েবলের সাথে swapTwoInts ( : :) ফাংশনটিতে কল করতে পারেন । নোট করুন যে কিছুটি এবং অপর আইনের নামগুলি অ্যাম্পারস্যান্ডের সাথে উপরিবর্তিত হয় যখন সেগুলি অদলবদল ( : :) ফাংশনে পাঠানো হয় :
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// Prints "someInt is now 107, and anotherInt is now 3"
উপরের উদাহরণটি দেখায় যে কিছুটি এবং অন্যর আইনের মূল মানগুলি swapTwoInts ( : :) ফাংশন দ্বারা পরিবর্তিত হয়েছে , যদিও তারা মূলত ফাংশনের বাইরে সংজ্ঞায়িত হয়েছিল।
বিঃদ্রঃ
ইন-আউট প্যারামিটারগুলি কোনও ফাংশন থেকে কোনও মান ফেরত দেওয়ার মতো নয়। উপরের সোয়াপটুইন্টস উদাহরণটি কোনও রিটার্নের ধরণ সংজ্ঞা দেয় না বা কোনও মান ফেরত দেয় না, তবে এটি এখনও কিছু এবং অন্য কোনও আইনের মান পরিবর্তন করে। ইন-আউট প্যারামিটারগুলি কোনও ক্রিয়াকলাপের তার কার্যক্ষেত্রের বাহিরের বাইরে প্রভাব ফেলতে বিকল্প উপায়।
public func getQuestionList(inout language: String) -> NSArray