操作序列过滤器的安全方法

问题描述 投票:0回答:1

下面代码的目的是获取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

虽然这段代码可以工作,但它有几个失败点。
建议使用什么方式来编写这个安全且干净的内容。

scala
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.