None collect ({ case n if n > 0 => n + 1; case _ => 0})
Почему бы n
иметь метод >
? Там нет ничего, что позволяло бы компилятору предполагать это. Итак, попробуйте изменить это на:
None collect ({ case n: Int if n > 0 => n + 1; case _ => 0})
И вы получите следующее сообщение об ошибке:
<console>:8: error: pattern type is incompatible with expected type;
found : Int
required: Nothing
None collect ({ case n: Int if n > 0 => n + 1; case _ => 0})
^
Это означает, что компилятор знает, что Int
здесь невозможен, поскольку вы просто передаете None
. Как это бывает, None
имеет тип Option[Nothing]
.