Первый тип является экзистенциальным, а второй - нормальным типом. Первый синтаксис на самом деле означает это:
def foo(x:X[t] forSome { type t }){}
Это означает, что x
имеет тип X[t]
, где t
может быть любым неопределенным type t
.
Интуитивно, X[_]
означает, что параметр типа X
не имеет значения, тогда как X[Any]
говорит, что это должно быть Any
.