将以下内容提供给方法:
def beCool[T <: S](args:Array[T]) = {}
def beCool(args:Array[T forSome {type T <:S}]) = {}
他们是等同的吗?你能不能给我一些例子呢?
答案 0 :(得分:3)
我认为,只要您需要访问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]) = ???