map, filter, এবং reduce এর ব্যবহার

ফাংশনাল প্রোগ্রামিং - সুইফট প্রোগ্রামিং (Swift Programming) - Computer Programming

214

Swift-এ map, filter, এবং reduce ফাংশনগুলি অত্যন্ত শক্তিশালী এবং কার্যকরী হাই-অর্ডার ফাংশন, যা কালেকশনের (যেমন, এরে, ডিকশনারি) উপর বিভিন্ন ধরনের অপারেশন পরিচালনা করতে সাহায্য করে। এরা ফাংশনাল প্রোগ্রামিং প্যাটার্ন অনুসরণ করে এবং কোডকে সংক্ষিপ্ত, রিডেবল এবং কার্যকরী করে তোলে।

১. map ফাংশন

map ফাংশন একটি কালেকশনের প্রতিটি আইটেমের উপর একটি নির্দিষ্ট অপারেশন (ফাংশন) প্রয়োগ করে এবং একটি নতুন কালেকশন রিটার্ন করে, যা অপারেশনের ফলাফল ধারণ করে। এটি মূল কালেকশনকে পরিবর্তন করে না।

সিনট্যাক্স:

let newArray = array.map { (element) in
    // অপারেশন
}

উদাহরণ ১: প্রতিটি আইটেমকে গুণ করা

let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers)

আউটপুট:

[1, 4, 9, 16, 25]

এখানে, map ফাংশন প্রতিটি সংখ্যাকে তার বর্গফল করে একটি নতুন এরে তৈরি করেছে।

উদাহরণ ২: স্ট্রিং-এর প্রতিটি আইটেমকে বড় হাতের অক্ষরে রূপান্তর করা

let names = ["alice", "bob", "charlie"]
let capitalizedNames = names.map { $0.capitalized }
print(capitalizedNames)

আউটপুট:

["Alice", "Bob", "Charlie"]

২. filter ফাংশন

filter ফাংশন একটি কালেকশনের প্রতিটি আইটেমকে একটি শর্তের (condition) উপর পরীক্ষা করে এবং একটি নতুন কালেকশন রিটার্ন করে, যেখানে কেবলমাত্র শর্তটি পূরণকারী আইটেমগুলি থাকে।

সিনট্যাক্স:

let filteredArray = array.filter { (element) in
    // শর্ত
}

উদাহরণ ১: শুধুমাত্র জোড় সংখ্যা নির্বাচন করা

let numbers = [1, 2, 3, 4, 5, 6, 7, 8]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)

আউটপুট:

[2, 4, 6, 8]

এখানে, filter ফাংশন শুধুমাত্র জোড় সংখ্যাগুলি বেছে নিয়েছে।

উদাহরণ ২: স্ট্রিং লম্বা যেগুলি ৪ অক্ষরের বেশি

let words = ["apple", "banana", "cat", "dog"]
let longWords = words.filter { $0.count > 4 }
print(longWords)

আউটপুট:

["apple", "banana"]

এখানে, filter ফাংশন শুধুমাত্র সেই স্ট্রিংগুলি বেছে নিয়েছে যেগুলি ৪ অক্ষরের বেশি।

৩. reduce ফাংশন

reduce ফাংশন একটি কালেকশনের সমস্ত আইটেমকে একটি একক মানে রূপান্তর করে। এটি একটি প্রাথমিক মান দিয়ে শুরু করে এবং প্রতিটি আইটেমের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে সেই মানকে আপডেট করে।

সিনট্যাক্স:

let result = array.reduce(initialValue) { (result, element) in
    // অপারেশন
}

উদাহরণ ১: সংখ্যার যোগফল বের করা

let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum)

আউটপুট:

15

এখানে, reduce ফাংশন 0 থেকে শুরু করে প্রতিটি সংখ্যাকে যোগ করে একটি মোট যোগফল (১৫) বের করেছে।

উদাহরণ ২: স্ট্রিং-এ সমস্ত আইটেম একত্রিত করা

let words = ["Swift", "is", "awesome"]
let sentence = words.reduce("") { $0 + " " + $1 }
print(sentence)

আউটপুট:

" Swift is awesome"

এখানে, reduce ফাংশন প্রতিটি স্ট্রিং-কে একত্রিত করে একটি বাক্য তৈরি করেছে। (প্রথম স্পেসটি এড়াতে প্রাথমিক মান পরিবর্তন করা যায়।)

map, filter, এবং reduce একসাথে ব্যবহার করা

এই তিনটি ফাংশন একসাথে ব্যবহার করে জটিল অপারেশন সহজে সম্পাদন করা যায়।

উদাহরণ: একটি এরে থেকে জোড় সংখ্যার বর্গফল বের করা এবং তাদের যোগফল খুঁজে বের করা

let numbers = [1, 2, 3, 4, 5, 6]
let result = numbers.filter { $0 % 2 == 0 } // শুধুমাত্র জোড় সংখ্যা
                      .map { $0 * $0 }       // বর্গফল
                      .reduce(0) { $0 + $1 } // যোগফল

print(result)

আউটপুট:

56

এখানে, প্রথমে filter দিয়ে জোড় সংখ্যা বের করা হয়েছে, তারপর map দিয়ে তাদের বর্গফল এবং শেষে reduce দিয়ে তাদের যোগফল বের করা হয়েছে।

উপসংহার

  • map: প্রতিটি আইটেমের উপর একটি অপারেশন প্রয়োগ করে নতুন কালেকশন তৈরি করে।
  • filter: শর্ত অনুযায়ী আইটেম ফিল্টার করে নতুন কালেকশন তৈরি করে।
  • reduce: সমস্ত আইটেমকে একটি একক মানে রূপান্তর করে।

Swift-এ map, filter, এবং reduce ফাংশনগুলির সঠিক ব্যবহার কোডকে আরও কার্যকর এবং সংক্ষিপ্ত করতে সাহায্য করে, যা Swift প্রোগ্রামিংয়ের একটি শক্তিশালী বৈশিষ্ট্য।

Content added By
Promotion

Are you sure to start over?

Loading...