برای گرفتن مقدار درون شئ از نوع 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