+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 پاسخ 330 بازدید
+2 امتیاز
1 پاسخ 922 بازدید
0 امتیاز
1 پاسخ 536 بازدید
0 امتیاز
1 پاسخ 506 بازدید
0 امتیاز
1 پاسخ 418 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 634 بازدید
0 امتیاز
1 پاسخ 1.6هزار بازدید
...