Вам понадобится первый, я думаю, всякий раз, когда вам нужен доступ к T
.Простейший пример возвращает элемент args:
def beCool(args: Array[T forSome { type T }]): T = args.head // --> not found: type T
def beCool[T](args: Array[T]): T = args.head // ok
отсутствие доступного типа T
в первом более очевидно при использовании подстановочного знака:
def beCool(args: Array[_ <: S]) = ???