【发布时间】:2023-03-10 22:56:01
【问题描述】:
在下面的示例中,在第二个 case 中,我预计会出现与第一个 case 相同的编译错误,但它可以编译。为什么?
object CaseMatching extends App {
case class Id(value: Long)
object Id { val zero = Id(0) }
case class Name(value: String)
case class IdName(id: Id, name: Name)
IdName(Id(0), Name("A")) match {
case IdName(_, Id(0) ) => // does not compile (as expected)
case IdName(_, Id.zero) => // does compile (but should not ?)
case IdName(Id.zero, _) => println("OK") // this is OK and will match
case _ =>
}
}
为什么相关? - 我花了一个小时的大部分时间来找出为什么从未遇到过以下情况:case TreeEntry(_, Some(child), _, _, NodeType.DIR, _, _) 那是因为 NodeType 在第 4 个字段中,而不是在第 5 个字段中。如果编译器告诉我,我将不胜感激!
【问题讨论】:
标签: scala pattern-matching case-class