স্কালাতে টাপলস হলো একটি অর্ডারড ডেটা স্ট্রাকচার যা একাধিক ভিন্ন ধরনের মান ধারণ করতে পারে। এটি সাধারণত এক বা একাধিক ভিন্ন ধরণের মান সংরক্ষণ করতে ব্যবহৃত হয়। টাপলসের উপাদানগুলি স্থির, অর্থাৎ একবার টাপল তৈরি হলে এর উপাদান পরিবর্তন করা যায় না (এটি একটি ইমিউটেবল ডেটা স্ট্রাকচার)।
টাপলসের বৈশিষ্ট্য:
- এতে একাধিক ধরণের ডেটা থাকতে পারে: একটি টাপল বিভিন্ন ধরনের ডেটা ধারণ করতে পারে, যেমন একে একাধিক প্রকারের মানের (যেমন String, Int, Boolean) সমন্বয়ে রাখা যায়।
- এটি অর্ডারড: টাপলে উপাদানগুলির একটি নির্দিষ্ট ক্রম থাকে, যা ইনডেক্সের মাধ্যমে অ্যাক্সেস করা যায়।
- এটি ইমিউটেবল: টাপলের একবার উপাদান সেট করা হলে তা পরিবর্তন করা যায় না।
টাপল ডিফাইন করা:
স্কালাতে টাপল ডিফাইন করা হয় সাধারণভাবে আউটপুটগুলির পাশাপাশি উপাদানগুলো কে কড়া করে কোণাগুলো (কোমা দিয়ে আলাদা) রাখে।
উদাহরণ:
val tuple1 = (1, "Scala", true)
val tuple2 = (2, 3.5, "Example", false)এখানে, tuple1 একটি টাপল যা তিনটি উপাদান ধারণ করছে: Int, String, এবং Boolean। অন্যদিকে tuple2 একটি টাপল, যা চারটি উপাদান ধারণ করছে, যার মধ্যে রয়েছে Int, Double, String, এবং Boolean।
টাপল থেকে মান অ্যাক্সেস করা:
টাপলের উপাদানগুলিকে অ্যাক্সেস করতে স্কালায় ইন্ডেক্স ব্যবহার করা হয়। তবে, স্কালাতে টাপল একে একে অ্যাক্সেস করতে উপাদান নামের সাথে ._1, ._2, ._3 ইত্যাদি ব্যবহার করা হয়।
উদাহরণ:
val myTuple = (42, "Scala", true)
val firstElement = myTuple._1 // 42
val secondElement = myTuple._2 // Scala
val thirdElement = myTuple._3 // trueএখানে, myTuple টাপলটির প্রথম উপাদান অ্যাক্সেস করা হয়েছে _1, দ্বিতীয় উপাদান _2, এবং তৃতীয় উপাদান _3 দিয়ে।
টাপল এর ব্যবহার:
- ফাংশনের রিটার্ন টাইপ: একাধিক মান রিটার্ন করতে ফাংশনগুলোতে টাপল ব্যবহার করা হয়।
উদাহরণ:
def getCoordinates(): (Int, Int) = {
(10, 20)
}
val coordinates = getCoordinates() // (10, 20)- বিভিন্ন ডেটা ট্যাবলেট: টাপল ব্যবহার করে একাধিক ভিন্ন ধরণের ডেটা একত্রিত করা যায়, যা প্রক্রিয়াকরণের জন্য সহজ।
টাপল এর সীমাবদ্ধতা:
- ফিক্সড আকার: একবার টাপল তৈরি হলে তার আকার পরিবর্তন করা যায় না।
- বড় টাপলস: টাপলের আকার বড় হলে কোডের পাঠযোগ্যতা কমে যেতে পারে, যেমন বড় সংখ্যক উপাদান থাকা টাপলস (যেমন 10টি বা তার বেশি উপাদান)।
সারাংশ:
টাপলস হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা একাধিক ধরণের মান সংরক্ষণ করতে পারে। এটি সহজেই ফাংশনগুলির রিটার্ন মান হিসেবে, বা একাধিক তথ্য একত্রিত করতে ব্যবহৃত হতে পারে। তবে, তার সীমাবদ্ধতা আছে, যেমন ইমিউটেবল এবং ফিক্সড আকার।
টাপলস হল একটি বিশেষ ধরনের ডেটা স্ট্রাকচার যা একাধিক উপাদান ধারণ করতে সক্ষম, যেখানে প্রতিটি উপাদান আলাদা ধরনের হতে পারে। এটি একটি অর্ডারড (ordered) ডেটা স্ট্রাকচার, অর্থাৎ এর উপাদানগুলি নির্দিষ্ট ক্রমে থাকে এবং প্রতিটি উপাদানকে অ্যাক্সেস করা যায় তার ইনডেক্স ব্যবহার করে।
টাপলসের ধারণা:
টাপলসের প্রধান বৈশিষ্ট্য হল এর উপাদানগুলো একাধিক ধরনের ডেটা ধারণ করতে পারে এবং একটি টাপলকে সাধারণত আর্ম স্টাইলের মধ্যে ( ) দিয়ে লেখে।
উদাহরণ:
val tuple = (1, "Scala", true)এখানে tuple একটি টাপল, যা তিনটি উপাদান ধারণ করছে:
1(Integer)"Scala"(String)true(Boolean)
স্কালায় টাপল এমন একটি ডেটা স্ট্রাকচার যা অনেক সময় ব্যবহৃত হয় যখন আপনাকে একসাথে একাধিক ভিন্ন ধরনের ডেটা একটি গ্রুপে রাখতে হয়, তবে এর পরিমাণ নির্দিষ্ট থাকে।
টাপলসের প্রয়োজনীয়তা:
একাধিক ধরনের ডেটা একসাথে রাখার সুবিধা:
টাপলসের মাধ্যমে একাধিক ভিন্ন ধরনের ডেটা একটি একক ইউনিট হিসেবে সংগঠিত করা যায়। উদাহরণস্বরূপ, একটি ব্যক্তির নাম, বয়স, এবং শহর একই টাপলে রাখা যেতে পারে।val person = ("John", 30, "New York")এখানে,
personটাপলটি তিনটি ভিন্ন ধরনের ডেটা ধারণ করছে (String, Int, String)।ফাংশন রিটার্ন ভ্যালু:
ফাংশনগুলির মাধ্যমে একাধিক মান ফেরত দিতে হলে টাপলস ব্যবহার করা হয়। স্কালাতে একাধিক মান ফেরত দেয়ার জন্য ফাংশনকে একটি টাপল রিটার্ন করতে পারে।উদাহরণ:
def getCoordinates(): (Int, Int) = { (10, 20) } val coordinates = getCoordinates() println(coordinates._1) // 10 println(coordinates._2) // 20- সাধারণ কোডের গঠন:
অনেক সময় একাধিক ভিন্ন ধরনের ডেটার সাথে কাজ করতে গেলে কোডটিকে পরিষ্কার ও পাঠযোগ্য রাখা যায় টাপল ব্যবহার করে। এটি ডেটার একসাথে গ্রুপিংয়ের মাধ্যমে সহজেই তাদের পরিচালনা করতে সহায়ক হয়। - ইমিউটেবল ডেটা স্ট্রাকচার:
স্কালাতে টাপলস একটি ইমিউটেবল (immutable) ডেটা স্ট্রাকচার, যার মানে একবার সেট করা হলে এর উপাদানগুলি পরিবর্তন করা যায় না। এটি নিরাপত্তা এবং পারফরম্যান্সের জন্য গুরুত্বপূর্ণ। - কমপ্যাক্ট ডেটা প্রেজেন্টেশন:
অনেক সময় ছোট এবং সোজা উপায়ে একাধিক মানের জন্য একটি উপযুক্ত কাঠামো তৈরি করতে টাপল সাহায্য করে। উদাহরণস্বরূপ, দুটি মানের একটি জোড়া সঠিকভাবে প্রতিনিধিত্ব করতে টাপল ব্যবহার করা হয়।
টাপলসের ব্যবহার:
- ফাংশনের আউটপুট: ফাংশন একাধিক মান ফেরত দেয়ার জন্য টাপল ব্যবহার করে।
- প্যারামিটার পাসিং: একাধিক উপাদান একসাথে পাস করতে টাপল ব্যবহার করা হয়, যেমন ডেটাবেসের ফলাফলগুলি (যেমন, একাধিক কলাম)।
- গ্রুপিং ডেটা: একাধিক ভিন্ন ডেটা টাইপের মান গ্রুপ করতে টাপল ব্যবহার করা হয়।
সারাংশ:
টাপলস হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা একাধিক ধরনের ডেটা ধারণ করতে পারে এবং একাধিক উপাদানের সাথে কাজ করার সুবিধা প্রদান করে। এর প্রধান প্রয়োজনীয়তা হলো একাধিক ভিন্ন ধরনের ডেটা একত্রিত করা এবং ফাংশনগুলির মাধ্যমে একাধিক মান ফেরত দেওয়ার সুবিধা প্রদান করা।
স্কালাতে টাপলস ব্যবহার করে একাধিক মান সহজে এবং কার্যকরভাবে পরিচালনা করা যায়। এটি বিশেষভাবে উপকারী যখন আপনার একাধিক ধরনের ভ্যালু একত্রে ব্যবহার করতে হয়, যেমন ফাংশন থেকে একাধিক ভ্যালু রিটার্ন করা বা একাধিক সম্পর্কিত ডেটা একত্রে রাখা।
১. একাধিক মান একসাথে রিটার্ন করা:
স্কালাতে একটি ফাংশন একাধিক মান রিটার্ন করার জন্য টাপল ব্যবহার করতে পারে। এটি যখন দরকার হয়, যেমন একটি ফাংশন যদি দুটি বা তার বেশি মান ফেরত দেয়, তখন টাপল ব্যবহার করা হয়। এর মাধ্যমে কোড আরো পরিষ্কার এবং সহজ হয়ে ওঠে।
উদাহরণ:
ধরা যাক, আপনি দুটি মান (যেমন, দুটি সংখ্যা) যোগ করার জন্য একটি ফাংশন লিখতে চান:
def addAndSubtract(x: Int, y: Int): (Int, Int) = {
val sum = x + y
val difference = x - y
(sum, difference) // টাপলে মান রিটার্ন
}
val result = addAndSubtract(10, 5)
println(result._1) // 15 (sum)
println(result._2) // 5 (difference)এখানে addAndSubtract ফাংশন দুটি মান রিটার্ন করছে: একটি sum এবং একটি difference, যা একটি টাপল আকারে রিটার্ন করা হচ্ছে। টাপলের মাধ্যমে সহজেই একাধিক মানকে ফেরত দেয়া সম্ভব।
২. একাধিক মান স্টোর করা:
টাপল ব্যবহার করে একাধিক মান একত্রে সংরক্ষণ করা যেতে পারে। এটি বিভিন্ন ধরনের ডেটা যেমন সংখ্যাবিদ্যা, স্ট্রিং, লজিক্যাল মান ইত্যাদি একটি একক টাপল হিসেবে ধারণ করে।
উদাহরণ:
val person = ("John", 30, "New York")
println(person._1) // John
println(person._2) // 30
println(person._3) // New Yorkএখানে, person টাপলটি তিনটি আলাদা ধরনের মান ধারণ করছে: একটি নাম (String), একটি বয়স (Int), এবং একটি শহর (String)। আপনি সহজেই টাপল থেকে পৃথক পৃথক মান অ্যাক্সেস করতে পারেন।
৩. ফাংশন এর মাধ্যমে একাধিক মান পাস করা:
যখন একটি ফাংশনকে একাধিক মান পাস করতে হয়, তখন আপনি টাপল ব্যবহার করতে পারেন। এটি বিশেষত সাহায্য করে যখন আপনার ফাংশনে একাধিক প্যারামিটার একসাথে পাস করতে হয়।
উদাহরণ:
def printPersonInfo(person: (String, Int, String)): Unit = {
val (name, age, city) = person
println(s"Name: $name, Age: $age, City: $city")
}
val person = ("Alice", 25, "London")
printPersonInfo(person)এখানে, printPersonInfo ফাংশনটি একটি টাপল প্যারামিটার হিসেবে নেয় এবং এটি সেই টাপলের উপাদানগুলিকে পৃথকভাবে এক্সট্র্যাক্ট করে।
৪. একাধিক মানের মাধ্যমে কাজ করা:
টাপলসকে অন্যান্য ডেটা স্ট্রাকচারের সাথে মিলিয়ে ব্যবহার করে একাধিক মানের উপর বিভিন্ন অপারেশন করা যায়।
উদাহরণ:
val tuple1 = (1, "Scala", true)
val tuple2 = (2, "Java", false)
val combined = tuple1._1 + tuple2._1 // সংখ্যা যোগ
val languages = tuple1._2 + " & " + tuple2._2 // স্ট্রিং যোগ
println(s"Sum of numbers: $combined") // 3
println(s"Languages: $languages") // Scala & Javaএখানে, দুটি টাপলকে ব্যবহার করে তাদের মধ্যে কিছু মান যোগ করা হয়েছে। tuple1 এবং tuple2 এর উপাদানগুলো থেকে নির্বাচিত উপাদানগুলোকে একত্রিত করা হয়েছে।
৫. টাপলের মধ্য থেকে মান বের করা:
টাপলের মান সহজেই বের করা যায় স্কালাতে ._1, ._2, ._3 ইত্যাদি দ্বারা, যা যথাক্রমে টাপলের প্রথম, দ্বিতীয়, তৃতীয় উপাদান ইত্যাদি নির্দেশ করে।
উদাহরণ:
val tuple = (1, "Scala", true, 3.14)
println(tuple._1) // 1
println(tuple._2) // Scala
println(tuple._3) // true
println(tuple._4) // 3.14সারাংশ:
টাপলস ব্যবহার করে একাধিক মান সহজেই পরিচালনা করা যায়। এটি আপনাকে একসাথে ভিন্ন ধরনের ডেটা রাখার সুবিধা দেয় এবং ফাংশনের আউটপুট, প্যারামিটার পাস, এবং ডেটা ম্যানিপুলেশনের জন্য অত্যন্ত উপকারী। স্কালাতে টাপলস খুবই কার্যকরী একটি টুল, যা আপনার কোডকে পরিষ্কার, সংগঠিত এবং কার্যকরী করে তোলে।
স্কালাতে টাপলস ব্যবহার করে একাধিক মান সংরক্ষণ করা হয় এবং এর উপাদানগুলি সহজেই এক্সেস করা যায়। টাপলের উপাদানগুলোকে এক্সেস করার জন্য কিছু নির্দিষ্ট টেকনিক ব্যবহার করা হয়। টাপল থেকে ডেটা এক্সট্রাকশন একটি সাধারণ কাজ, যা অনেক ফাংশনাল এবং কার্যকরী প্রক্রিয়ায় ব্যবহৃত হয়।
১. টাপল এক্সেস (Tuple Access):
স্কালাতে টাপলের উপাদানগুলো অ্যাক্সেস করতে ইন্ডেক্সিং বা ডট নোটেশন ব্যবহার করা হয়। টাপল সাধারণত আকারে immutable (অপরিবর্তনযোগ্য) এবং ordered (অর্ডার্ড) ডেটা স্ট্রাকচার হয়, যা একে একে উপাদান অ্যাক্সেস করতে সহায়তা করে।
ডট নোটেশন (Dot Notation) ব্যবহার করে এক্সেস:
টাপলের প্রতিটি উপাদানকে অ্যাক্সেস করতে স্কালাতে ._1, ._2, ._3 ইত্যাদি ব্যবহার করা হয়।
_1টাপলের প্রথম উপাদান,_2টাপলের দ্বিতীয় উপাদান,_3টাপলের তৃতীয় উপাদান ইত্যাদি।
উদাহরণ:
val person = ("John", 30, "New York")
println(person._1) // John
println(person._2) // 30
println(person._3) // New Yorkএখানে, person টাপলটির তিনটি উপাদান অ্যাক্সেস করা হয়েছে: নাম, বয়স এবং শহর।
২. প্যাটার্ন ম্যাচিং (Pattern Matching):
স্কালাতে টাপল থেকে ডেটা বের করার জন্য প্যাটার্ন ম্যাচিং একটি শক্তিশালী এবং সাধারণ পদ্ধতি। প্যাটার্ন ম্যাচিং আপনাকে সহজেই টাপলের উপাদানগুলো একত্রে বের করার সুযোগ দেয়।
উদাহরণ:
val person = ("John", 30, "New York")
person match {
case (name, age, city) =>
println(s"Name: $name, Age: $age, City: $city")
}এখানে, প্যাটার্ন ম্যাচিং ব্যবহার করে টাপলের তিনটি উপাদান name, age, এবং city তে বের করা হয়েছে। এটি একটি সহজ এবং পরিষ্কার পদ্ধতি, যা কোডের পাঠযোগ্যতা বাড়ায়।
৩. ডেসট্রাকচারিং (Destructuring):
স্কালাতে আপনি ডেসট্রাকচারিং পদ্ধতিও ব্যবহার করতে পারেন, যা প্যাটার্ন ম্যাচিংয়ের সাথে মিলিত। এটি টাপলের উপাদানগুলোকে পৃথক ভেরিয়েবলগুলিতে বের করার একটি পদ্ধতি।
উদাহরণ:
val person = ("Alice", 25, "London")
val (name, age, city) = person
println(s"Name: $name, Age: $age, City: $city")এখানে, person টাপলটির উপাদানগুলো name, age, এবং city নামে তিনটি আলাদা ভেরিয়েবলতে সংরক্ষিত হয়েছে। এটি একটি খুবই পরিষ্কার এবং ব্যবহারবান্ধব পদ্ধতি।
৪. লুপে টাপল ব্যবহার (Using Tuples in Loops):
টাপলগুলিকে লুপের মধ্যে ব্যবহার করা যেতে পারে। আপনি টাপলগুলির ভেতরে থাকা উপাদানগুলিকে একে একে লুপের মাধ্যমে এক্সেস করতে পারেন। এটি সাধারণত যখন আপনি একাধিক টাপলের উপাদানগুলো একত্রে প্রক্রিয়া করতে চান তখন ব্যবহৃত হয়।
উদাহরণ:
val list = List(("John", 30), ("Alice", 25), ("Bob", 22))
for ((name, age) <- list) {
println(s"Name: $name, Age: $age")
}এখানে, list একটি তালিকা যা টাপল ধারণ করছে। লুপের মাধ্যমে আমরা প্রতিটি টাপলের উপাদান বের করে প্রিন্ট করেছি।
৫. টাপল থেকে মান বের করা এবং ফেরত দেওয়া (Extracting and Returning Values from Tuples):
কখনও কখনও টাপল থেকে মান বের করে তা পুনরায় রিটার্ন করতে হতে পারে, বিশেষ করে ফাংশনে একাধিক মান ফেরত দেওয়ার সময়। এক্ষেত্রে, টাপল থেকে ডেটা বের করার জন্য উপরের টেকনিকগুলি ব্যবহৃত হয়।
উদাহরণ:
def getPersonInfo(): (String, Int, String) = {
("David", 40, "Paris")
}
val (name, age, city) = getPersonInfo()
println(s"Name: $name, Age: $age, City: $city")এখানে, getPersonInfo ফাংশনটি একটি টাপল রিটার্ন করছে এবং তার উপাদানগুলি বের করার জন্য ডেসট্রাকচারিং পদ্ধতি ব্যবহৃত হয়েছে।
সারাংশ:
টাপল থেকে ডেটা এক্সট্রাকশন বা এক্সেস করার জন্য বিভিন্ন পদ্ধতি রয়েছে, যেমন ডট নোটেশন, প্যাটার্ন ম্যাচিং, ডেসট্রাকচারিং, এবং লুপ ব্যবহার। এই পদ্ধতিগুলির মাধ্যমে স্কালা প্রোগ্রামাররা সহজেই এবং কার্যকরীভাবে টাপলের উপাদানগুলো অ্যাক্সেস করতে পারেন। টাপল একটি শক্তিশালী ডেটা স্ট্রাকচার, যা একাধিক ভিন্ন ধরনের মান একত্রে সংরক্ষণ এবং প্রক্রিয়া করার সুবিধা দেয়।
স্কালাতে নেস্টেড টাপলস এবং কমপ্লেক্স ডেটা স্ট্রাকচার ব্যবহার করে আপনি একাধিক স্তরের ডেটা সংগ্রহ এবং প্রক্রিয়া করতে পারেন। এই ধরনের ডেটা স্ট্রাকচারগুলি স্কালার বিভিন্ন পদ্ধতির মাধ্যমে সহজে এক্সেস, ম্যানিপুলেট, এবং বিশ্লেষণ করা যায়।
১. নেস্টেড টাপলস (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