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

时间:2011-03-21 06:47:42

标签: scala

将以下内容提供给方法:

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

他们是等同的吗?你能不能给我一些例子呢?

1 个答案:

答案 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]) = ???