下面代码的目的是获取id等于30的学生的姓名
class Person(name: String , id : Int)
val people = Seq(
Person("Emily", 10),
Person("Hannah", 20),
Person("Mercedes", 30)
)
val selected = people.filter(_.id == 30).headOption.map(_.name).get
虽然这段代码可以工作,但它有几个失败点。
建议使用什么方式来编写这个安全且干净的内容。
您可以使用
find
那么您有两个选择:
val selected = people.find(_.id == 30).map(_.name).getOrElse("No Selection")
println("Selected : " + selected)
match
处理返回的 Option
people.find(_.id == 30).map(_.name) match {
case Some(selected) => println("Selected : " + selected)
case None => println("No Selection")
}
两者都应该导致:
Selected : Mercedes