+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 پاسخ 261 بازدید
+2 امتیاز
1 پاسخ 803 بازدید
0 امتیاز
1 پاسخ 446 بازدید
0 امتیاز
1 پاسخ 422 بازدید
0 امتیاز
1 پاسخ 328 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 534 بازدید
0 امتیاز
1 پاسخ 1.4هزار بازدید
...