为什么以下代码在两种情况下都会打印one
。
oneOrList(o: Any) = o match {
case List => "list"
case _ => "one"
}
println(oneOrList(1))
println(oneOrList(List(1, 2)))
答案 0 :(得分:3)
case List => "list"
仅匹配List单例对象。所以它只匹配oneOrList(List)
要匹配列表,请使用:
oneOrList(o: Any) = o match {
case x: List[_] => "list"
case _ => "one"
}
println(oneOrList(1))
println(oneOrList(List(1, 2)))
答案 1 :(得分:3)
List
中的case List =>
不是类型歧视,它是针对单身{{1}的匹配目标(技术上称为 scrutinee )的测试} object主要用于通过List
方法提供List(v1, v2, v3, ...)
工厂。