【发布时间】:2021-12-17 06:29:15
【问题描述】:
我在 Scala 中有以下用于模式匹配的代码:
response.flatMap(employee =>
employee match {
case e if e.type == Manager => e.headoffice
case e if e.type == Clerk => e.branch
case _ => None
}
)
这是进行模式匹配的最佳方式吗?能不能更简洁一点?
【问题讨论】:
-
这里的
e.type是什么?自定义方法?无论如何,您可以删除整个employee => employee match {并执行response.flatMap { case ... } -
e.type是Employee中的一个字段,枚举类型
-
e.type是e的单例类型。什么 Scala 版本应该编译这个?这整个线程生活在什么奇怪的平行宇宙中,问题和答案都没有任何意义...... O_o?? -
@AndreyTyukin 在任何人中,您只需要使用反引号来修饰
type字段:scastie.scala-lang.org/BalmungSan/jV1iSWOHQEuiXobySFvpqw/2 - 我不想专注于此,因为 OP 已经提到它是一个字段。 - 无论如何,将我的答案编辑为语法正确。