繁体   English   中英

什么时候在Scala中使用存在类型?

[英]When to use existential type in Scala?

给出以下方法:

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

它们相等吗? 您能给我一些例子,什么时候应该选哪个?

我想,只要您需要访问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]) = ???

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM