scala 编译器应该为我在下面评论过的 if 语句生成警告,但它没有。为什么?
sealed trait T
object A extends T
val s:Seq[T] = Seq(A)
val result = s.map {
//This if should produce a compiler warning
case a if(a == "A") =>
"First"
case a =>
//This if should produce a compiler warning
if (a == "A") {
"Second"
}
else
{
"Third"
}
}
如您所料,结果将是“第三”,但编译器应该在case a if(a == "A")
和 上生成警告if (a == "A")
,但可惜没有警告。
如果我编写以下代码,它的行为就像我期望的那样:
if(A == "A"){
println("can't happen")
}
// warning: comparing values of types A.type and String using `==' will always yield false
为什么会这样?
编辑:我使用的是 Scala 2.10.1。