何时在Scala中使用存在类型?

何时在Scala中使用存在类型?,scala,Scala,请提供以下方法: def beCool[T <: S](args:Array[T]) = {} def beCool(args:Array[T forSome {type T <:S}]) = {} def beCool[T我认为,无论何时需要访问T,您都需要第一个。最简单的示例是返回args元素: def beCool(args: Array[T forSome { type T }]): T = args.head // --> not found: type T def

请提供以下方法:

def beCool[T <: S](args:Array[T]) = {}
def beCool(args:Array[T forSome {type T <:S}]) = {}

def beCool[T我认为,无论何时需要访问
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]) = ???
def beCool(参数:数组[_