Swift-এ ডেটা স্ট্রাকচার হল বিভিন্ন ধরনের ডেটা সংরক্ষণ এবং ম্যানিপুলেট করার উপায়। এটি ডেভেলপারদের জন্য ডেটা সংগঠিত করতে এবং কোডকে আরও কার্যকরী এবং দ্রুত করতে সহায়ক। Swift-এ ডেটা স্ট্রাকচার সাধারণত কয়েকটি প্রধান ক্যাটাগরিতে বিভক্ত, যেমন:
১. অ্যারে (Array)
অ্যারে একটি সিকোয়েন্সড ডেটা স্ট্রাকচার যেখানে এক ধরনের একাধিক উপাদান রাখা যায়। অ্যারের বৈশিষ্ট্য:
- ইনডেক্সড অ্যাক্সেস: প্রতিটি উপাদানের একটি নির্দিষ্ট ইনডেক্স থাকে।
- মিউটেবল এবং ইমিউটেবল:
varদিয়ে ডিক্লেয়ার করলে মিউটেবল,letদিয়ে ডিক্লেয়ার করলে ইমিউটেবল।
উদাহরণ:
var numbers = [1, 2, 3, 4, 5]
numbers.append(6) // 6 যুক্ত করবে
numbers[0] = 10 // প্রথম উপাদানটি পরিবর্তন করবে
- অ্যারে ব্যবহার করে দ্রুত উপাদান খুঁজে পাওয়া যায়, তবে উপাদান যোগ বা মুছতে কিছু সময় লাগে।
২. সেট (Set)
সেট এমন একটি ডেটা স্ট্রাকচার যা ইউনিক উপাদান সংরক্ষণ করে এবং উপাদানগুলির ক্রম সংরক্ষণ করে না। এটি দ্রুত উপাদান খোঁজা এবং যোগ/মুছে ফেলতে সুবিধা দেয়।
বৈশিষ্ট্য:
- উপাদানগুলি ইউনিক হতে হবে, অর্থাৎ একই মান একাধিকবার রাখা যাবে না।
- ক্রমের কোনো গুরুত্ব নেই, তাই ইনডেক্স দিয়ে উপাদান অ্যাক্সেস করা যায় না।
উদাহরণ:
var uniqueNumbers: Set = [1, 2, 3, 3, 4] // 3 একবারই থাকবে
uniqueNumbers.insert(5) // নতুন উপাদান যোগ করবে
৩. ডিকশনারি (Dictionary)
ডিকশনারি হলো একটি কী-ভ্যালু পেয়ার ডেটা স্ট্রাকচার, যেখানে প্রতিটি মান একটি নির্দিষ্ট কী-এর সাথে যুক্ত থাকে। এটি অ্যারে বা সেটের তুলনায় আরও শক্তিশালী কারণ এর মাধ্যমে দ্রুত এবং নির্ভুল উপাদান খুঁজে পাওয়া যায়।
বৈশিষ্ট্য:
- প্রতিটি মানের সাথে একটি ইউনিক কী যুক্ত থাকে।
- ক্রমের কোনো গুরুত্ব নেই।
উদাহরণ:
var studentScores = ["Alice": 90, "Bob": 85, "Charlie": 88]
studentScores["Alice"] = 95 // Alice-এর মান আপডেট হবে
- ডিকশনারি ব্যবহার করে দ্রুত কোনো নির্দিষ্ট মান খুঁজে পাওয়া যায় এবং মান আপডেট করা যায়।
৪. টিউপল (Tuple)
টিউপল হলো একটি ডেটা স্ট্রাকচার যা একাধিক ভিন্ন ডেটা টাইপ একসঙ্গে সংরক্ষণ করতে ব্যবহৃত হয়। এটি সাধারণত ডেটার একটি নির্দিষ্ট গ্রুপ সংরক্ষণ করতে ব্যবহার করা হয়।
বৈশিষ্ট্য:
- একাধিক মান একত্রে সংরক্ষণ করা যায়, এবং প্রতিটি মানের ডেটা টাইপ আলাদা হতে পারে।
- ফিক্সড সাইজ: একবার টিউপল ডিফাইন করা হলে তার উপাদান সংখ্যা অপরিবর্তনীয় হয়।
উদাহরণ:
let person = (name: "Alice", age: 30)
print(person.name) // আউটপুট: Alice
৫. স্ট্যাক (Stack)
স্ট্যাক হলো একটি LIFO (Last In, First Out) ডেটা স্ট্রাকচার, যেখানে সর্বশেষ যোগ করা উপাদান প্রথমে মুছে ফেলা হয়। এটি সাধারণত অ্যাপ্লিকেশনগুলিতে সাময়িক ডেটা সংরক্ষণে ব্যবহৃত হয়।
অপারেশন:
push: নতুন উপাদান যোগ করা।pop: উপাদান মুছে ফেলা।peek: উপরের উপাদানটি দেখা।
উদাহরণ:
var stack = [Int]()
stack.append(1) // push
stack.append(2)
let last = stack.pop() // pop, আউটপুট: 2
৬. কিউ (Queue)
কিউ হলো একটি FIFO (First In, First Out) ডেটা স্ট্রাকচার, যেখানে প্রথমে যোগ করা উপাদান প্রথমে মুছে ফেলা হয়। এটি সাধারণত সার্ভার প্রসেসিং বা কাজের তালিকা ম্যানেজ করতে ব্যবহৃত হয়।
অপারেশন:
enqueue: নতুন উপাদান যোগ করা।dequeue: প্রথম উপাদান মুছে ফেলা।
উদাহরণ:
var queue = [Int]()
queue.append(1) // enqueue
queue.append(2)
let first = queue.removeFirst() // dequeue, আউটপুট: 1
৭. লিঙ্কড লিস্ট (Linked List)
লিঙ্কড লিস্ট একটি ডেটা স্ট্রাকচার যেখানে প্রতিটি উপাদান একটি নোড হিসেবে থাকে এবং প্রতিটি নোডে ডেটা ও পরবর্তী নোডের রেফারেন্স থাকে। এটি ডাইনামিক ডেটা ম্যানেজমেন্ট এবং ইনসার্ট ও ডিলিট অপারেশনগুলির জন্য উপযোগী।
বৈশিষ্ট্য:
- প্রতিটি নোডে ডেটা এবং পরবর্তী নোডের লিঙ্ক থাকে।
- ইনডেক্স অ্যাক্সেস করা যায় না; প্রতিটি নোড অনুসন্ধান করে অ্যাক্সেস করতে হয়।
প্রকারভেদ:
- সিঙ্গেলি লিঙ্কড লিস্ট: প্রতিটি নোডে পরবর্তী নোডের লিঙ্ক থাকে।
- ডাবলি লিঙ্কড লিস্ট: প্রতিটি নোডে পূর্ববর্তী এবং পরবর্তী নোডের লিঙ্ক থাকে।
সংক্ষেপে
Swift-এ ডেটা স্ট্রাকচারগুলি বিভিন্ন প্রকারের ডেটা সংরক্ষণ এবং ম্যানিপুলেট করতে সহায়ক। এগুলি ব্যবহারের মাধ্যমে কোড দ্রুত এবং কার্যকরী করা যায়, এবং এটি প্রোগ্রামিং এবং অ্যালগরিদম ম্যানেজমেন্টে দক্ষতা বাড়াতে সাহায্য করে।
Swift-এ অ্যারে (Array) এবং সেট (Set) হলো দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা একাধিক মান সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। অ্যারে এবং সেট উভয়ই সংগ্রহের ধরন হলেও, এদের বৈশিষ্ট্য এবং ব্যবহারিক পার্থক্য রয়েছে। নিচে অ্যারে এবং সেট সম্পর্কে বিস্তারিত আলোচনা করা হলো।
অ্যারে (Array)
অ্যারে হলো একটি সংগ্রহ, যা একই ধরনের একাধিক মান সংরক্ষণ করতে পারে এবং প্রতিটি মান একটি নির্দিষ্ট ক্রম বা ক্রমানুসারে থাকে। অ্যারে ইনডেক্সের মাধ্যমে প্রতিটি উপাদান অ্যাক্সেস করা যায় এবং অ্যারের ইনডেক্স সর্বদা ০ থেকে শুরু হয়।
অ্যারে ডিক্লেয়ার এবং ইনিশিয়ালাইজেশন
var numbers: [Int] = [1, 2, 3, 4, 5]
- এখানে,
numbersহলো একটি ইন্টিজার টাইপ অ্যারে, যা[1, 2, 3, 4, 5]মানগুলো ধারণ করে। [Int]হলো অ্যারের টাইপ, যা নির্দেশ করে এটি একটি ইন্টিজার টাইপের অ্যারে।
অ্যারের বৈশিষ্ট্য
- ইনডেক্সের মাধ্যমে অ্যাক্সেস: প্রতিটি উপাদান ইনডেক্স ব্যবহার করে অ্যাক্সেস করা যায়।
- ক্রমাঙ্কিত: অ্যারে সর্বদা ক্রমানুসারে থাকে।
- ডুপ্লিকেট মান অনুমোদন: অ্যারেতে একই মান একাধিকবার থাকতে পারে।
অ্যারে ব্যবহার
// নির্দিষ্ট উপাদান অ্যাক্সেস করা
let firstNumber = numbers[0] // Output: 1
// নতুন উপাদান যোগ করা
numbers.append(6) // numbers: [1, 2, 3, 4, 5, 6]
// উপাদান পরিবর্তন করা
numbers[2] = 10 // numbers: [1, 2, 10, 4, 5, 6]
// উপাদান সরানো
numbers.remove(at: 1) // numbers: [1, 10, 4, 5, 6]
// অ্যারের দৈর্ঘ্য পাওয়া
let count = numbers.count // Output: 5
খালি অ্যারে তৈরি
var emptyArray: [String] = []
- এখানে,
emptyArrayহলো একটি খালি স্ট্রিং অ্যারে। আপনি চাইলে এভাবে খালি অ্যারে ইনিশিয়ালাইজ করতে পারেন।
সেট (Set)
সেট হলো একটি সংগ্রহ, যা একই ধরনের একাধিক মান সংরক্ষণ করতে পারে, তবে সেটের উপাদানগুলির মধ্যে কোনো নির্দিষ্ট ক্রম থাকে না এবং সেটে ডুপ্লিকেট মান থাকতে পারে না।
সেট ডিক্লেয়ার এবং ইনিশিয়ালাইজেশন
var numberSet: Set<Int> = [1, 2, 3, 4, 5]
- এখানে,
numberSetহলো একটি ইন্টিজার টাইপ সেট, যা[1, 2, 3, 4, 5]মানগুলো ধারণ করে। Set<Int>নির্দেশ করে এটি একটি ইন্টিজার টাইপের সেট।
সেটের বৈশিষ্ট্য
- ইনডেক্স নেই: সেটের উপাদানগুলো ইনডেক্স অনুযায়ী অ্যাক্সেস করা যায় না, কারণ সেট অর্ডারবিহীন।
- অর্ডারবিহীন: সেটে উপাদানগুলো কোনো নির্দিষ্ট ক্রমে থাকে না।
- ডুপ্লিকেট মান অনুমোদন নয়: সেটে প্রতিটি মান একবারই থাকতে পারে, একই মান একাধিকবার থাকতে পারে না।
সেট ব্যবহার
// নতুন উপাদান যোগ করা
numberSet.insert(6) // numberSet: [1, 2, 3, 4, 5, 6]
// উপাদান সরানো
numberSet.remove(3) // numberSet: [1, 2, 4, 5, 6]
// উপাদান আছে কিনা চেক করা
let containsFour = numberSet.contains(4) // Output: true
// সেটের দৈর্ঘ্য পাওয়া
let setCount = numberSet.count // Output: 5
খালি সেট তৈরি
var emptySet = Set<String>()
- এখানে,
emptySetহলো একটি খালি স্ট্রিং টাইপ সেট।
অ্যারে বনাম সেট
| বৈশিষ্ট্য | অ্যারে (Array) | সেট (Set) |
|---|---|---|
| অর্ডার | ক্রমানুসারে উপাদান থাকে | উপাদানগুলির কোনো নির্দিষ্ট ক্রম নেই |
| ইনডেক্স | ইনডেক্সের মাধ্যমে উপাদান অ্যাক্সেস করা যায় | ইনডেক্স নেই, সরাসরি উপাদান অ্যাক্সেস করা যায় না |
| ডুপ্লিকেট মান | একই মান একাধিকবার থাকতে পারে | ডুপ্লিকেট মান অনুমোদন নয় |
| পারফরম্যান্স | ইনডেক্সেড অপারেশনে দ্রুত, তবে অনুসন্ধানে ধীরগতি | অনুসন্ধান এবং উপাদান সরানো দ্রুত (হ্যাশ-ভিত্তিক) |
কখন অ্যারে এবং কখন সেট ব্যবহার করবেন?
অ্যারে ব্যবহার করবেন যখন:
- উপাদানগুলো ক্রমানুসারে রাখতে হবে।
- ইনডেক্সের মাধ্যমে দ্রুত অ্যাক্সেস করতে হবে।
- একই মান একাধিকবার থাকতে পারে।
সেট ব্যবহার করবেন যখন:
- উপাদানগুলির ক্রম গুরুত্বপূর্ণ নয়।
- দ্রুত অনুসন্ধান (contains) প্রয়োজন।
- ডুপ্লিকেট মান রাখতে হবে না।
উদাহরণ: অ্যারে এবং সেট ব্যবহার
// অ্যারে ব্যবহার
var fruitsArray = ["Apple", "Banana", "Orange", "Apple"]
print(fruitsArray) // Output: ["Apple", "Banana", "Orange", "Apple"]
// সেট ব্যবহার
var fruitsSet: Set<String> = ["Apple", "Banana", "Orange", "Apple"]
print(fruitsSet) // Output: ["Apple", "Banana", "Orange"]
- অ্যারেতে ডুপ্লিকেট মান রাখতে পারলেও, সেটে ডুপ্লিকেট মান সরিয়ে ফেলে, কারণ সেটে প্রতিটি মান একবারই থাকতে পারে।
উপসংহার
Swift-এ অ্যারে এবং সেট দুই ধরনের সংগ্রহের ধরন, যা বিভিন্ন প্রকার ডেটা সংরক্ষণ ও পরিচালনা করতে ব্যবহৃত হয়।
- অ্যারে হলো একটি ক্রমানুসারিত সংগ্রহ, যেখানে ইনডেক্সের মাধ্যমে উপাদান অ্যাক্সেস করা যায় এবং ডুপ্লিকেট মান অনুমোদিত।
- সেট হলো একটি অর্ডারবিহীন সংগ্রহ, যা ডুপ্লিকেট মান অনুমোদিত নয় এবং দ্রুত অনুসন্ধানের জন্য উপযোগী।
প্রোগ্রামিংয়ে কোন পরিস্থিতিতে কোনটি ব্যবহার করবেন, সেটি আপনার ডেটার ধরন এবং ব্যবহারের উপর নির্ভর করে।
Swift-এ ডেটা স্ট্রাকচার হিসাবে ডিকশনারি এবং টিউপল খুবই গুরুত্বপূর্ণ। এরা উভয়েই ডেটা সংরক্ষণ এবং সংগঠিত করতে সাহায্য করে, তবে তাদের ব্যবহারের পদ্ধতি এবং উপযোগিতা ভিন্ন। নিচে ডিকশনারি এবং টিউপল নিয়ে বিস্তারিত আলোচনা করা হলো।
Swift-এ ডিকশনারি (Dictionary)
ডিকশনারি হলো একটি সংগ্রহ, যেখানে ডেটা কী-ভ্যালু (key-value) পেয়ারের মাধ্যমে সংরক্ষিত হয়। প্রতিটি কী অনন্য (unique) হয়, এবং প্রতিটি কী-এর জন্য একটি ভ্যালু নির্ধারণ করা থাকে। ডিকশনারি ব্যবহার করে ডেটা দ্রুত খুঁজে বের করা যায়।
ডিকশনারি তৈরি করা
সিনট্যাক্স:
var dictionaryName: [KeyType: ValueType] = [key1: value1, key2: value2, ...]
উদাহরণ:
var studentGrades: [String: Int] = [
"Alice": 85,
"Bob": 90,
"Charlie": 88
]
এখানে, studentGrades একটি ডিকশনারি যা শিক্ষার্থীদের নাম (String) এবং তাদের গ্রেড (Int) সংরক্ষণ করে।
ডিকশনারি থেকে মান অ্যাক্সেস করা
ডিকশনারি থেকে মান অ্যাক্সেস করতে কী ব্যবহার করা হয়।
if let grade = studentGrades["Alice"] {
print("Alice's grade is \(grade).")
} else {
print("Grade not found.")
}
এখানে, যদি "Alice" নামে কোনও কী থাকে, তাহলে এটি তার মান (গ্রেড) প্রিন্ট করবে।
ডিকশনারিতে মান আপডেট করা বা নতুন কী-ভ্যালু জোড়া যোগ করা
// নতুন কী-ভ্যালু জোড়া যোগ করা
studentGrades["David"] = 92
// বিদ্যমান ভ্যালু আপডেট করা
studentGrades["Alice"] = 95
ডিকশনারি থেকে মান মুছে ফেলা
studentGrades.removeValue(forKey: "Bob")
এখানে, "Bob" এর কী এবং ভ্যালু মুছে ফেলা হবে।
ডিকশনারির বৈশিষ্ট্য
- অর্ডার মেইনটেইন করে না: ডিকশনারি সাধারণত কী-ভ্যালু জোড়ার কোনো নির্দিষ্ট ক্রম মেইনটেইন করে না।
- ফাস্ট লুকআপ: ডিকশনারিতে কী ব্যবহার করে দ্রুত লুকআপ করা যায়।
টিউপল (Tuple)
টিউপল হলো একটি গ্রুপ, যেখানে বিভিন্ন ডেটা টাইপ একসাথে রাখা যায়। টিউপল সাধারণত সংক্ষিপ্ত এবং নির্দিষ্ট ডেটা সেটের জন্য ব্যবহৃত হয়, যেমন একটি ফাংশন একাধিক মান রিটার্ন করতে চাইলে।
টিউপল তৈরি করা
সিনট্যাক্স:
let tupleName = (value1, value2, ...)
উদাহরণ:
let person = ("Alice", 25, "New York")
এখানে, person একটি টিউপল, যা একটি ব্যক্তির নাম, বয়স, এবং শহর সংরক্ষণ করে।
টিউপল থেকে মান অ্যাক্সেস করা
let name = person.0
let age = person.1
let city = person.2
print("Name: \(name), Age: \(age), City: \(city)")
এখানে, টিউপল এর ভ্যালুগুলি ইন্ডেক্স (০, ১, ২) ব্যবহার করে অ্যাক্সেস করা হয়।
টিউপল নামকরণ করে তৈরি করা
টিউপল আরও রিডেবল করার জন্য এতে নাম ব্যবহার করা যায়:
let person = (name: "Alice", age: 25, city: "New York")
print("Name: \(person.name), Age: \(person.age), City: \(person.city)")
এখানে, টিউপলের প্রতিটি মানের জন্য নাম (name, age, city) ব্যবহার করা হয়েছে, যা টিউপল থেকে মান অ্যাক্সেস করা আরও সহজ করে।
ফাংশনে টিউপল ব্যবহার
Swift-এ টিউপল ফাংশনে একাধিক মান রিটার্ন করতে ব্যবহৃত হয়।
func getPersonInfo() -> (String, Int) {
return ("Alice", 25)
}
let (name, age) = getPersonInfo()
print("Name: \(name), Age: \(age)")
এখানে, getPersonInfo ফাংশনটি একটি টিউপল রিটার্ন করে, যা একটি নাম এবং একটি বয়স ধারণ করে।
ডিকশনারি বনাম টিউপল
- ডিকশনারি:
- সাধারণত বড় এবং পরিবর্তনশীল ডেটা সংরক্ষণের জন্য ব্যবহার করা হয়।
- কী-ভ্যালু পেয়ার ব্যবহার করে ডেটা অ্যাক্সেস করা হয়।
- ডেটা মডিফাই করা এবং অ্যাড করা যায়।
- টিউপল:
- সাধারণত ছোট এবং নির্দিষ্ট ডেটা সেটের জন্য ব্যবহৃত হয়।
- বিভিন্ন ডেটা টাইপ একসাথে সংরক্ষণ করা যায়।
- টিউপল সাধারণত অপরিবর্তনীয় (immutable) এবং কেবলমাত্র ডেটা স্ট্রাকচারের জন্য ব্যবহৃত হয়।
উপসংহার
Swift-এ ডিকশনারি এবং টিউপল ব্যবহার করে ডেটা সংরক্ষণ এবং সংগঠিত করা যায়।
- ডিকশনারি বড় এবং পরিবর্তনশীল ডেটার জন্য কার্যকর, যেখানে কী-ভ্যালু পেয়ার ব্যবহার করে ডেটা অ্যাক্সেস করা হয়।
- টিউপল ছোট এবং নির্দিষ্ট ডেটা সেটের জন্য উপযুক্ত, বিশেষ করে যখন ডেটা একসাথে গ্রুপ করা এবং একটি ফাংশন থেকে একাধিক মান রিটার্ন করা প্রয়োজন।
এই দুটি ডেটা স্ট্রাকচার দক্ষতার সাথে ব্যবহার করলে Swift প্রোগ্রামিং আরও কার্যকর এবং মজবুত হয়ে ওঠে।
Swift-এ লিস্ট কম্প্রিহেনশন এর মতো সরাসরি কোনো বৈশিষ্ট্য নেই যেমনটা Python-এ দেখা যায়, তবে Swift-এ map, filter, এবং reduce ফাংশন ব্যবহার করে সহজেই ডেটা প্রসেসিং এবং ফিল্টারিং করা যায়। এগুলো ফাংশনাল প্রোগ্রামিং ধারণার সাথে সামঞ্জস্যপূর্ণ এবং অ্যারে বা অন্যান্য সংগ্রহ থেকে নতুন সংগ্রহ তৈরি করতে সহায়ক।
১. map ফাংশন
map ফাংশন একটি অ্যারে বা সংগ্রহের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে একটি নতুন সংগ্রহ তৈরি করে। এটি অনেকটা লিস্ট কম্প্রিহেনশনের মতো কাজ করে।
উদাহরণ: একটি অ্যারের প্রতিটি উপাদানের বর্গমূল বের করা
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // Output: [1, 4, 9, 16, 25]
- এখানে,
mapফাংশন প্রতিটি উপাদানের বর্গমূল ($0 * $0) গণনা করে একটি নতুন অ্যারে তৈরি করেছে।
২. filter ফাংশন
filter ফাংশন একটি অ্যারে বা সংগ্রহের উপাদানগুলির মধ্যে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলো বেছে নিয়ে একটি নতুন সংগ্রহ তৈরি করে। এটি ডেটা ফিল্টারিং-এর জন্য খুবই উপযোগী।
উদাহরণ: জোড় সংখ্যা ফিল্টার করা
let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // Output: [2, 4, 6]
- এখানে,
filterফাংশন ব্যবহার করে জোড় সংখ্যাগুলি ফিল্টার করা হয়েছে, অর্থাৎ যেসব সংখ্যা ২ দ্বারা বিভাজ্য (বা যাদেরmoduloঅপারেশন$0 % 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যোগ করে একটি একক ফলাফল (যোগফল) বের করেছে।
একাধিক ফাংশন চেইন করে ব্যবহার করা
Swift-এ map, filter, এবং reduce ফাংশন চেইন করে ব্যবহার করা যায়, যাতে একাধিক অপারেশন একত্রে সম্পন্ন করা যায়।
উদাহরণ: বর্গমূল ফিল্টার এবং যোগফল বের করা
let numbers = [1, 2, 3, 4, 5, 6]
let result = numbers
.map { $0 * $0 } // প্রতিটি উপাদানের বর্গমূল বের করা
.filter { $0 % 2 == 0 } // যেগুলো জোড় সংখ্যা সেগুলো ফিল্টার করা
.reduce(0, +) // ফিল্টার করা মানগুলোর যোগফল বের করা
print(result) // Output: 56
- প্রথমে
mapফাংশন ব্যবহার করে প্রতিটি উপাদানের বর্গমূল বের করা হয়েছে। - এরপর
filterফাংশন দিয়ে জোড় সংখ্যাগুলো ফিল্টার করা হয়েছে। - শেষে
reduceফাংশন ব্যবহার করে ফিল্টার করা উপাদানগুলোর যোগফল বের করা হয়েছে।
সংক্ষিপ্ত উপায়ে অ্যারে প্রসেসিং
Swift-এ এই ফাংশনগুলো ব্যবহার করে আপনি লিস্ট কম্প্রিহেনশনের মতো সংক্ষিপ্তভাবে অ্যারে এবং ডেটা প্রসেসিং করতে পারেন। নিচে আরও কিছু উদাহরণ দেওয়া হলো:
উদাহরণ: একটি অ্যারের প্রতিটি উপাদানের ২ গুণ করে একটি নতুন অ্যারে তৈরি করা
let numbers = [1, 2, 3, 4]
let doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers) // Output: [2, 4, 6, 8]
উদাহরণ: নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং ফিল্টার করা
let names = ["Alice", "Bob", "Charlie", "Dave"]
let longNames = names.filter { $0.count > 3 }
print(longNames) // Output: ["Alice", "Charlie", "Dave"]
- এখানে, স্ট্রিংগুলোর দৈর্ঘ্য (
count) ৩ এর বেশি হলে সেগুলো ফিল্টার করা হয়েছে।
উপসংহার
Swift-এ map, filter, এবং reduce ফাংশন ব্যবহার করে আপনি অ্যারে এবং অন্যান্য সংগ্রহের উপর বিভিন্ন ধরনের ডেটা প্রসেসিং করতে পারেন, যা Python-এর লিস্ট কম্প্রিহেনশনের মতো কার্যকর।
map: উপাদানগুলো রূপান্তর করতে।filter: শর্ত অনুযায়ী উপাদান ফিল্টার করতে।reduce: উপাদানগুলোর উপর অপারেশন প্রয়োগ করে একক ফলাফল বের করতে।
এগুলো ব্যবহার করে আপনি আপনার কোডকে সংক্ষিপ্ত, কার্যকর এবং সহজে পড়তে ও বুঝতে সক্ষম করতে পারেন।
Read more