স্কালা অপশনাল এবং ইথার

স্কালা অ্যাডভান্সড ফাংশনাল প্রোগ্রামিং - স্কালা প্রোগ্রামিং (Scala Programming) - Computer Programming

214

স্কালায় Optional এবং Either দুটি গুরুত্বপূর্ণ ডেটা টাইপ যা ফাংশনাল প্রোগ্রামিংয়ের ধারণা অনুসরণ করে এবং ত্রুটি বা অবস্থা পরিচালনার জন্য ব্যবহৃত হয়। এগুলি সাধারণত ফাংশনাল প্রোগ্রামিং এ অপারেশনাল ফলাফল বা ত্রুটি হ্যান্ডলিং করার জন্য ব্যবহৃত হয়।


১. স্কালা Optional (Option)

Option হল একটি জেনেরিক টাইপ যা দুটি অবস্থা ধারণ করতে পারে:

  • Some(value): মান (value) ধারণ করে।
  • None: কোনো মান নেই।

এটি সেই ক্ষেত্রে ব্যবহৃত হয় যেখানে কোনো মান পাওয়া যাবে কিনা তা অজানা থাকে। Option আপনাকে নিশ্চিত করে যে কোনো নাল (null) ভ্যালু রিটার্ন করা হবে না, যা কোডে নাল পয়েন্টার এক্সসেপশন (NullPointerException) থেকে মুক্তি দেয়।

Option এর গঠন:

Option(value)

Some(value) এবং None এর মধ্যে পার্থক্য:

  • Some(value): কোনো মান সফলভাবে পাওয়া গেছে।
  • None: মান পাওয়া যায়নি বা কোনো মান নেই।

উদাহরণ: Option ব্যবহার

def findUserById(id: Int): Option[String] = {
  if (id == 1) Some("Alice") else None
}

val user1 = findUserById(1)  // Some("Alice")
val user2 = findUserById(2)  // None

user1 match {
  case Some(name) => println(s"User found: $name")
  case None => println("User not found")
}

user2 match {
  case Some(name) => println(s"User found: $name")
  case None => println("User not found")
}

এখানে:

  • findUserById ফাংশনটি Option[String] রিটার্ন করে।
    • যদি id == 1 হয়, তাহলে Some("Alice") ফেরত দিবে।
    • অন্যথায় None ফেরত দিবে।
  • match স্টেটমেন্ট ব্যবহার করে Option থেকে মান এক্সট্র্যাক্ট করা হয়েছে।

Option এর কিছু সাধারণ অপারেশন:

  • getOrElse: যদি Some(value) থাকে, তবে সেই মানটি ফেরত দেয়, অন্যথায় একটি ডিফল্ট মান প্রদান করে।
  • map: যদি Some(value) থাকে, তবে সেই মানের উপর একটি ফাংশন প্রয়োগ করা হয়।
  • flatMap: মেটা ফাংশন হিসেবে ব্যবহৃত, যেখানে একটি Option রিটার্ন করতে পারে।
val maybeUser = Some("John")
val result = maybeUser.getOrElse("Unknown User")
println(result)  // Output: John

val modifiedUser = maybeUser.map(user => user.toUpperCase)
println(modifiedUser)  // Output: Some(JOHN)

২. স্কালা Either

Either একটি জেনেরিক টাইপ যা দুটি অবস্থার মধ্যে একটি ধারণ করতে পারে:

  • Left(value): সাধারণত ত্রুটি বা ব্যতিক্রম (error) ধারণ করতে ব্যবহৃত হয়।
  • Right(value): সাধারণত সফল ফলাফল (success) ধারণ করতে ব্যবহৃত হয়।

Either মূলত Option এর চেয়ে বেশি তথ্য ধারণ করতে সক্ষম, কারণ এটি দুটি আলাদা পরিস্থিতি (ত্রুটি এবং সফলতা) মোকাবেলা করতে পারে।

Either এর গঠন:

Either[LeftType, RightType]
  • Left(value): ত্রুটি বা ব্যতিক্রমের তথ্য।
  • Right(value): সফলতার তথ্য।

উদাহরণ: Either ব্যবহার

def divide(a: Int, b: Int): Either[String, Int] = {
  if (b == 0) Left("Cannot divide by zero")
  else Right(a / b)
}

val result1 = divide(10, 2)  // Right(5)
val result2 = divide(10, 0)  // Left("Cannot divide by zero")

result1 match {
  case Right(value) => println(s"Success: $value")
  case Left(error) => println(s"Error: $error")
}

result2 match {
  case Right(value) => println(s"Success: $value")
  case Left(error) => println(s"Error: $error")
}

এখানে:

  • divide ফাংশনটি Either[String, Int] রিটার্ন করে, যেখানে:
    • Right(value): সফল ফলাফল, যেমন ১০/২ = ৫।
    • Left(error): ত্রুটি, যেমন ১০/০ = "Cannot divide by zero"।

Either এর কিছু সাধারণ অপারেশন:

  • map: Right এর উপরে ফাংশন প্রয়োগ করা।
  • flatMap: আরো Either রিটার্ন করার জন্য ফাংশন প্রয়োগ করা।
  • fold: Left এবং Right উভয়কেই একটি একক ফলাফলে রূপান্তর করা।
val rightResult = Right(5)
val newValue = rightResult.map(_ * 2)
println(newValue)  // Output: Right(10)

৩. Option এবং Either এর মধ্যে পার্থক্য

বৈশিষ্ট্যOptionEither
ব্যবহারযখন কোনো মান থাকতে পারে অথবা না থাকতে পারেযখন সফলতা বা ত্রুটির মধ্যে একটি নির্ধারণ করতে হয়
মানের ধরনSome(value) বা NoneRight(value) বা Left(value)
ত্রুটি হ্যান্ডলিংশুধুমাত্র মানের উপস্থিতি বা অনুপস্থিতিত্রুটি এবং সফলতার মধ্যে পার্থক্য করা যায়
এটা কবে ব্যবহার করবেন?মান হতে পারে, কিন্তু ব্যতিক্রম বা ত্রুটি নেইযে কোনো সময় দুটি আলাদা অবস্থা হ্যান্ডল করতে

সারাংশ

  • Option: স্কালায় একটি ইমিউটেবল ডাটা টাইপ যা একটি মান বা কোনো মান না থাকার ক্ষেত্রে ব্যবহৃত হয়। এটি Some(value) বা None এর মাধ্যমে মান ধারণ করে।
  • Either: স্কালায় একটি জেনেরিক ডাটা টাইপ যা দুটি আলাদা অবস্থা ধারণ করতে পারে: Left (ত্রুটি বা ব্যতিক্রম) এবং Right (সফলতা)।

এগুলো সাধারণত ফাংশনাল প্রোগ্রামিংয়ের ধারণা অনুসরণ করে ব্যবহৃত হয় এবং আপনার কোডকে নিরাপদ এবং নির্ভরযোগ্য করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...