Option[T]
স্কালায় আমি ক্লাসের বিন্দুটি বুঝতে পারি না । মানে আমি None
ওভারের কোনও অগ্রগতি দেখতে পাচ্ছি না null
।
উদাহরণস্বরূপ, কোডটি বিবেচনা করুন:
object Main{
class Person(name: String, var age: int){
def display = println(name+" "+age)
}
def getPerson1: Person = {
// returns a Person instance or null
}
def getPerson2: Option[Person] = {
// returns either Some[Person] or None
}
def main(argv: Array[String]): Unit = {
val p = getPerson1
if (p!=null) p.display
getPerson2 match{
case Some(person) => person.display
case None => /* Do nothing */
}
}
}
এখন ধরুন, পদ্ধতিটি getPerson1
ফিরে আসে null
, তারপরে display
প্রথম লাইনে করা কলটি main
ব্যর্থ হতে বাধ্য NPE
। একইভাবে যদি getPerson2
ফিরে আসে None
, display
কলটি আবার কিছু অনুরূপ ত্রুটির সাথে ব্যর্থ হবে।
যদি তা হয় তবে স্কেল Option[T]
জাভাতে ব্যবহৃত সাধারণ পদ্ধতির অনুসরণ না করে কেন নতুন মান র্যাপার ( ) প্রবর্তন করে জিনিসগুলিকে জটিল করে তোলে ?
হালনাগাদ:
আমি @ মিচের পরামর্শ অনুসারে আমার কোডটি সম্পাদনা করেছি । আমি এখনও এর কোনও বিশেষ সুবিধা দেখতে পাচ্ছি না Option[T]
। আমাকে ব্যতিক্রমী null
বা None
উভয় ক্ষেত্রেই পরীক্ষা করতে হবে। :(
আমি যদি @ মাইকেল এর উত্তর থেকে সঠিকভাবে বুঝতে পারি তবে এর একমাত্র সুবিধা Option[T]
হ'ল এটি স্পষ্টভাবে প্রোগ্রামারকে বলে যে এই পদ্ধতিটি কোনওটিই ফিরিয়ে দিতে পারে না ? এই নকশা পছন্দ পিছনে পিছনে শুধুমাত্র এই কারণ?