2012-02-28 10 views

Odpowiedz

7

Pod maską String* jest przekazywany jako Seq[String]. To wszystko jest po prostu cukier syntaktyczny:

def blah(ss: String*) = {...} 
blah("Hi","there") 

zostaje przekształcony

def blah(ss: Seq[String]) = {...} 
blah(Seq("Hi", "there")) 

i :_* oznacza po prostu „trzymaj cukier, już mam, co trzeba - seq!”

+0

tj. Nie jest to metoda Seq, tylko kolejny cukier - jakiś specjalny operator? :) – tuxSlayer

+1

@tuxSlayer - Zgadza się. ':' oznacza "jest typu", jak w 'val x: Int' (' x' jest typu 'Int'). Zatem '_ *' powinno być pewnego rodzaju ("Wiem, że chcesz varargs, ale spójrz, już mam typ Seq!"). Okay, to nie jest prawdziwy typ, ale przynajmniej cukier jest spójny pod względem składniowym. –

+0

OK, dziękuję. Właśnie dzisiaj poświęciłem trochę czasu na szukanie tej metody w bibliotece :) Teraz jest jasne :) – tuxSlayer

Powiązane problemy