+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

وقتی یک متد در Scala بجای برگرداندن یک مقدار، Option آن مقدار را برمی گرداند، چگونه می توان به مقدار درون شئ Option دسترسی داشت؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)
ویرایش شده قبل توسط

برای گرفتن مقدار درون شئ از نوع Option[T] چند راه وجود دارد (بهترین راه حل راه سوم یعنی Pattern matching است):

1- با استفاده از متد isDefined چک کنیم که آیا Option مقدار دارد یا خیر:

val user = UserRepository.findById(1)
if (user.isDefined) {
  println(user.get.firstName)
}

2- استفاده از متد getOrElse:

  val username: Option[String] = None

  println(username.getOrElse("empty"))

3- استفاده از Pattern matching:

  val user = UserRepository.findById(1)

  user match {
    case Some(user) => println(user.firstName)
    case None => println("empty")
  }

4- رفتار شبیه به collection ها با Option (استفاده از  foreach):

UserRepository.findById(1).foreach(user => println(user.firstName)) // sampleName

5- استفاده از Map، flatMap، filter یا for:

  UserRepository.findById(0).map(_.firstName) // Some(sampleName)


  for {
    user <- UserRepository.findById(0)
  } yield user.firstName // sampleName

سوالات مشابه

+1 امتیاز
0 پاسخ 356 بازدید
+2 امتیاز
1 پاسخ 973 بازدید
0 امتیاز
1 پاسخ 571 بازدید
0 امتیاز
1 پاسخ 539 بازدید
0 امتیاز
1 پاسخ 453 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 678 بازدید
0 امتیاز
1 پاسخ 1.7هزار بازدید
...