Я могу ошибаться, но достаточно взглянуть на определение самой функции:
def test(x: X[_]): X[_ <: F] = x
единственный тип информации, который дает экзистенциальный тип, - это то, что что-то существует.и с помощью этой сигнатуры вы пытаетесь «сузить» результат функции
, чтобы показать его на практическом примере.скажем, у вас есть что-то вроде этого:
def test(x: Option[_]): Option[_ <: String]
и затем вы называете это проходящим внутри Option[Int]
.Вы ожидаете, что это назначение будет правильным?
val result: Option[_ <: String] = test(Some(1): Option[_])