স্কালাতে নেস্টেড টাপলস এবং কমপ্লেক্স ডেটা স্ট্রাকচার ব্যবহার করে আপনি একাধিক স্তরের ডেটা সংগ্রহ এবং প্রক্রিয়া করতে পারেন। এই ধরনের ডেটা স্ট্রাকচারগুলি স্কালার বিভিন্ন পদ্ধতির মাধ্যমে সহজে এক্সেস, ম্যানিপুলেট, এবং বিশ্লেষণ করা যায়।
১. নেস্টেড টাপলস (Nested Tuples)
নেস্টেড টাপলস হল এমন টাপলস, যার মধ্যে অন্য টাপল থাকতে পারে। এটি আপনাকে আরও জটিল ডেটা কাঠামো তৈরি করতে সাহায্য করে, যেখানে একাধিক স্তরে ডেটা সংরক্ষণ করা হয়।
উদাহরণ:
val nestedTuple = (("John", 30), ("Alice", 25), ("Bob", 22))
println(nestedTuple._1) // ("John", 30)
println(nestedTuple._1._1) // John
println(nestedTuple._1._2) // 30এখানে, nestedTuple একটি টাপল যা তিনটি ছোট টাপল ধারণ করছে। প্রতিটি ছোট টাপল একটি নাম এবং বয়স ধারণ করছে। টাপলের মধ্যে টাপল অ্যাক্সেস করতে আমরা প্রথমে মূল টাপলটিকে এক্সেস করি, তারপর তার ভেতরের টাপলটির উপাদানগুলো এক্সেস করি।
২. কমপ্লেক্স ডেটা স্ট্রাকচার (Complex Data Structures)
স্কালাতে কমপ্লেক্স ডেটা স্ট্রাকচার বলতে এমন স্ট্রাকচারকে বোঝানো হয় যা একাধিক ভিন্ন ডেটা টাইপের উপাদান ধারণ করে এবং তার মধ্যে একাধিক স্তরের ডেটা থাকতে পারে। এই ধরনের ডেটা স্ট্রাকচার সাধারণত একাধিক ডেটা টাইপের মান সংরক্ষণ করতে এবং একযোগে কাজ করতে ব্যবহৃত হয়।
স্কালাতে কমপ্লেক্স ডেটা স্ট্রাকচারে অন্তর্ভুক্ত হতে পারে:
- লিস্টের ভিতরে টাপলস: একাধিক টাপল বা ডেটা সম্বলিত একটি লিস্ট।
- ম্যাপসের ভিতরে টাপলস: কী-ভ্যালু পেয়ার ধারণকারী ম্যাপ।
- ম্যাপের ভিতরে লিস্ট বা টাপলস: ম্যাপে বিভিন্ন তালিকা বা টাপল ধারণ করা।
উদাহরণ ১: লিস্টের ভিতরে টাপলস
val listOfTuples = List(("John", 30), ("Alice", 25), ("Bob", 22))
// একে একে অ্যাক্সেস করা
listOfTuples.foreach { case (name, age) =>
println(s"Name: $name, Age: $age")
}এখানে, listOfTuples একটি লিস্ট, যা কয়েকটি টাপল ধারণ করছে। প্রতিটি টাপল একটি নাম এবং বয়স ধারণ করছে। লুপের মাধ্যমে এসব উপাদান সহজে অ্যাক্সেস এবং প্রিন্ট করা হচ্ছে।
উদাহরণ ২: ম্যাপের ভিতরে টাপলস
val mapOfTuples = Map("John" -> (30, "New York"), "Alice" -> (25, "London"))
println(mapOfTuples("John")._1) // 30 (age)
println(mapOfTuples("John")._2) // New York (city)এখানে, mapOfTuples একটি ম্যাপ যেখানে কী (নাম) এর সাথে একটি টাপল যুক্ত রয়েছে, যার মধ্যে বয়স এবং শহর তথ্য রয়েছে।
৩. টাপল এবং লিস্ট বা ম্যাপের সংমিশ্রণ (Combining Tuples with Lists or Maps)
নেস্টেড টাপলস এবং কমপ্লেক্স ডেটা স্ট্রাকচারগুলি একে অপরের সাথে মিশিয়ে আরও জটিল ডেটা তৈরি করতে ব্যবহৃত হতে পারে। এর মাধ্যমে আপনি আরও শক্তিশালী এবং ফ্লেক্সিবল ডেটা ম্যানিপুলেশন করতে পারবেন।
উদাহরণ ৩: ম্যাপ এবং লিস্টের সংমিশ্রণ
val studentScores = Map(
"John" -> List(85, 90, 78),
"Alice" -> List(92, 88, 79),
"Bob" -> List(76, 80, 72)
)
println(studentScores("John").sum) // 253 (sum of John's scores)এখানে, studentScores ম্যাপে প্রতিটি ছাত্রের নাম এবং তার স্কোরের একটি লিস্ট রয়েছে। লিস্টের মাধ্যমে আমরা প্রতিটি ছাত্রের স্কোর একত্রে ম্যানিপুলেট করতে পারি, যেমন তার স্কোরের যোগফল বের করা।
৪. নেস্টেড ম্যাপস (Nested Maps)
এখানে, নেস্টেড ম্যাপ এর মাধ্যমে আরো জটিল ডেটা কাঠামো তৈরি করা হয়েছে যেখানে একটি ম্যাপের ভিতরে অন্য একটি ম্যাপ বা টাপল থাকতে পারে।
উদাহরণ ৪: নেস্টেড ম্যাপস
val nestedMap = Map(
"John" -> Map("Math" -> 90, "Science" -> 85),
"Alice" -> Map("Math" -> 92, "Science" -> 88)
)
println(nestedMap("John")("Math")) // 90
println(nestedMap("Alice")("Science")) // 88এখানে, nestedMap ম্যাপের মধ্যে প্রতিটি ছাত্রের জন্য অন্য একটি ম্যাপ রয়েছে, যা তাদের বিষয়ভিত্তিক স্কোর ধারণ করছে। আমরা এই ম্যাপের উপাদানগুলো একে একে অ্যাক্সেস করতে পারি।
৫. একাধিক স্তরের নেস্টিং (Multi-level Nesting):
আপনি আরও গভীর স্তরের নেস্টিংও তৈরি করতে পারেন, যেখানে টাপল, লিস্ট, এবং ম্যাপ একে অপরের মধ্যে নেস্টেড হয়ে থাকতে পারে।
উদাহরণ ৫: একাধিক স্তরের নেস্টিং
val complexStructure = (("John", List(85, 90, 78)), ("Alice", Map("Math" -> 92, "Science" -> 88)))
println(complexStructure._1._1) // John (name)
println(complexStructure._1._2.sum) // 253 (sum of John's scores)
println(complexStructure._2._2("Math")) // 92 (Alice's Math score)এখানে, complexStructure একটি টাপল যার মধ্যে দুটি উপাদান রয়েছে। প্রথম উপাদান একটি টাপল ধারণ করে যার মধ্যে নাম এবং স্কোরের লিস্ট রয়েছে, এবং দ্বিতীয় উপাদান একটি টাপল ধারণ করছে যার মধ্যে নাম এবং একটি ম্যাপ রয়েছে।
সারাংশ:
নেস্টেড টাপলস এবং কমপ্লেক্স ডেটা স্ট্রাকচার ব্যবহার করে আপনি একাধিক স্তরের ডেটা পরিচালনা করতে পারেন। এটি বিশেষভাবে সহায়ক যখন একাধিক ভিন্ন ধরনের ডেটা সংরক্ষণ এবং একসাথে প্রক্রিয়া করতে হয়। স্কালাতে এই ধরনের ডেটা স্ট্রাকচারগুলি আপনাকে শক্তিশালী এবং নমনীয় কোড লেখার সুযোগ দেয়।
Read more