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]হ'ল এটি স্পষ্টভাবে প্রোগ্রামারকে বলে যে এই পদ্ধতিটি কোনওটিই ফিরিয়ে দিতে পারে না ? এই নকশা পছন্দ পিছনে পিছনে শুধুমাত্র এই কারণ?