+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 پاسخ 336 بازدید
+2 امتیاز
1 پاسخ 929 بازدید
0 امتیاز
1 پاسخ 539 بازدید
0 امتیاز
1 پاسخ 510 بازدید
0 امتیاز
1 پاسخ 423 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 643 بازدید
0 امتیاز
1 پاسخ 1.6هزار بازدید
...