Я просто догадываюсь здесь, так как я не эксперт по scala, но согласно документации для класса Any в scala, я думаю, что, поскольку null не является объектом, он не происходит от Any и, как таковое, не соответствует первому перечисленному случаю.
Добавление примера кода ниже. Он печатает «что-то еще» при запуске.
val x = (2, null)
x match {
case (i:Int, v:Any) => println("got tuple %s: %s".format(i, v))
case (i:Int, null) => println("something else %s".format(i))
case _ => println("catch all")
}
После дополнительных исследований кажется, что null должен совпадать с любым смыслом, в документации говорится, что он расширяет AnyRef, который расширяет Any.
РЕДАКТИРОВАТЬ: Как все говорили. Первый случай не соответствует нулю специально. Это указано в документации.