+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 پاسخ 164 بازدید
+2 امتیاز
1 پاسخ 620 بازدید
0 امتیاز
1 پاسخ 363 بازدید
0 امتیاز
1 پاسخ 307 بازدید
0 امتیاز
1 پاسخ 246 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 400 بازدید
0 امتیاز
1 پاسخ 850 بازدید
...