2011-03-21 14 views
9

Aşağıdakileri yöntemlere verin:Scala'da varoluşsal türü ne zaman kullanılır?

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

Bunlar eşdeğer midir? Hangisini tercih edeceğimi bana bazı örnekler verebilir misiniz?

+2

http: //scalada.blogspot .com/2008/01/varoluşsal-types.html –

cevap

3

T'a erişmeniz gerektiğinde ilk bence ihtiyacınız olacaktır. En basit örnek args unsurunu dönüyor:

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 

Eğer joker kullandığınızda ilk birinde erişilebilir bir tip T ait inexistance daha belirgindir:

def beCool(args: Array[_ <: S]) = ??? 
İlgili konular