我正在通过Coursera课程学习Scala中的函数式编程,并遇到了与语言描述不同的行为。根据关于模式匹配的讲座,第二个println
语句的输出应该是false
而不是true
在以下Scala电子表格中:
object MatchTest {
def test(char: Char, list: List[Char]): Boolean = list match {
case char :: tail => true
case _ => false
} //> test: (char: Char, list: List[Char])Boolean
println(test('a', "ab".toList)) //> true
println(test('b', "ab".toList)) //> true
}
为什么第二次测试与char :: tail
匹配且与_
不匹配?