Swift-এ হাইয়ার অর্ডার ফাংশন হলো এমন ফাংশন, যা অন্য ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করতে পারে, অথবা ফাংশনকে রিটার্ন করতে পারে। এটি ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ধারণা, যা কোডকে আরও মডিউলার, পুনঃব্যবহারযোগ্য এবং সংক্ষিপ্ত করে তোলে। হাইয়ার অর্ডার ফাংশন Swift-এ প্রচুর ব্যবহার হয়, যেমন map, filter, এবং reduce।
হাইয়ার অর্ডার ফাংশনের গঠন
func higherOrderFunction(param: (Type) -> ReturnType) -> ReturnType {
// ফাংশনের কার্যক্রম
}
param: (Type) -> ReturnType: ফাংশনের প্যারামিটার হিসেবে আরেকটি ফাংশন দেওয়া হয়েছে।- এই ধরনের ফাংশন প্রোগ্রামের একটি নির্দিষ্ট কার্যক্রমকে সাধারণ এবং পুনঃব্যবহারযোগ্যভাবে তৈরি করতে সহায়ক।
উদাহরণ: হাইয়ার অর্ডার ফাংশন
func applyOperation(_ a: Int, _ b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
// দুটি সংখ্যার যোগফল
let sum = applyOperation(5, 3) { $0 + $1 }
print(sum) // Output: 8
// দুটি সংখ্যার গুণফল
let product = applyOperation(5, 3) { $0 * $1 }
print(product) // Output: 15
- এখানে,
applyOperationএকটি হাইয়ার অর্ডার ফাংশন, যা দুটি ইন্টিজার এবং একটি ফাংশন প্যারামিটার গ্রহণ করে, যেটি দুটি ইন্টিজার ইনপুট নিয়ে একটি ইন্টিজার রিটার্ন করে। - আমরা
applyOperationকল করার সময় ক্লোজার ব্যবহার করেছি, যা যোগ এবং গুণ অপারেশন করে।
Swift-এর বিল্ট-ইন হাইয়ার অর্ডার ফাংশন
Swift-এ কয়েকটি গুরুত্বপূর্ণ হাইয়ার অর্ডার ফাংশন রয়েছে, যেগুলি অ্যারে বা সংগ্রহের উপর কার্যকরভাবে অপারেশন করতে ব্যবহৃত হয়। নিচে কিছু সাধারণ উদাহরণ দেওয়া হলো।
১. map
map ফাংশন অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে একটি নতুন অ্যারে তৈরি করে। এটি একটি হাইয়ার অর্ডার ফাংশন, কারণ এটি একটি ক্লোজার বা ফাংশন প্যারামিটার হিসেবে গ্রহণ করে।
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // Output: [1, 4, 9, 16, 25]
- এখানে,
mapপ্রতিটি উপাদানের উপর ক্লোজারে উল্লেখিত অপারেশন প্রয়োগ করে (এখানে প্রতিটি সংখ্যার বর্গমূল বের করা হয়েছে) এবং একটি নতুন অ্যারে তৈরি করেছে।
২. filter
filter ফাংশন অ্যারের প্রতিটি উপাদান চেক করে, শর্ত অনুযায়ী ফিল্টার করে একটি নতুন অ্যারে তৈরি করে। এটি একটি হাইয়ার অর্ডার ফাংশন, কারণ এটি একটি ক্লোজার প্যারামিটার হিসেবে গ্রহণ করে, যা প্রতিটি উপাদানের উপর শর্ত প্রয়োগ করে।
let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // Output: [2, 4, 6]
- এখানে,
filterপ্রতিটি উপাদানের উপর% 2 == 0শর্ত প্রয়োগ করে এবং যেসব উপাদান শর্ত পূরণ করে, সেগুলি নিয়ে একটি নতুন অ্যারে তৈরি করেছে।
৩. reduce
reduce ফাংশন অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে একটি একক মানে রূপান্তর করে। এটি দুটি প্যারামিটার গ্রহণ করে: একটি শুরুর মান এবং একটি ক্লোজার, যা প্রতিটি উপাদান প্রক্রিয়াজাত করে।
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum) // Output: 15
- এখানে,
reduceফাংশন প্রতিটি উপাদান যোগ করে একটি একক যোগফল রিটার্ন করেছে।0হলো শুরুর মান এবং ক্লোজার$0 + $1প্রতিটি উপাদানের যোগফল বের করছে।
হাইয়ার অর্ডার ফাংশন ব্যবহার: কাস্টম উদাহরণ
উদাহরণ: বিভিন্ন ধরনের অপারেশন প্রয়োগ করা
func performOperation(on numbers: [Int], using operation: (Int) -> Int) -> [Int] {
return numbers.map(operation)
}
let numbers = [1, 2, 3, 4, 5]
// প্রতিটি উপাদানের দ্বিগুণ
let doubled = performOperation(on: numbers) { $0 * 2 }
print(doubled) // Output: [2, 4, 6, 8, 10]
// প্রতিটি উপাদানের বর্গমূল
let squared = performOperation(on: numbers) { $0 * $0 }
print(squared) // Output: [1, 4, 9, 16, 25]
- এখানে,
performOperationফাংশনটি একটি অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে নতুন অ্যারে তৈরি করে। এটি একটি হাইয়ার অর্ডার ফাংশন, কারণ এটি একটি ফাংশন প্যারামিটার হিসেবে গ্রহণ করে।
হাইয়ার অর্ডার ফাংশনের সুবিধা
১. কোডের পুনঃব্যবহারযোগ্যতা: একবার হাইয়ার অর্ডার ফাংশন লিখলে তা বিভিন্ন ধরনের অপারেশন বা ক্লোজার দিয়ে ব্যবহার করা যায়। ২. কোডের সংক্ষিপ্ততা: ফাংশন বা ক্লোজার প্যারামিটার হিসেবে ব্যবহার করে কম কোডে একই কাজ সম্পন্ন করা যায়। ৩. মডিউলারিটি: হাইয়ার অর্ডার ফাংশনের মাধ্যমে কোডকে ছোট ছোট অংশে ভাগ করা যায়, যা কোডের মডিউলারিটি বাড়ায় এবং পড়তে ও বুঝতে সহজ হয়।
উপসংহার
Swift-এ হাইয়ার অর্ডার ফাংশন ফাংশনাল প্রোগ্রামিং ধারণা ব্যবহার করে প্রোগ্রামকে আরও মডিউলার, পুনঃব্যবহারযোগ্য, এবং কার্যকর করে তোলে।
map,filter, এবংreduceহলো সাধারণ হাইয়ার অর্ডার ফাংশন, যেগুলি অ্যারে এবং অন্যান্য সংগ্রহের উপর সহজে বিভিন্ন ধরনের অপারেশন করতে সহায়ক।- কাস্টম হাইয়ার অর্ডার ফাংশন ব্যবহার করে আপনি আপনার প্রোগ্রামে আরও মডুলার এবং ডাইনামিক ফাংশন তৈরি করতে পারেন।
Swift-এ হাইয়ার অর্ডার ফাংশনের ব্যবহার প্রোগ্রামিংকে আরও সংক্ষিপ্ত, কার্যকর এবং শক্তিশালী করে।