2015-06-26 5 views
34

Si consideri il codice qui sotto:Come passare l'array Scala nel metodo Scala vararg?

private def test(some:String*){ 

} 

private def call() { 
    val some = Array("asd", "zxc") 
    test(some) 
} 

Esso stampa expect String, found Array[String] Perché? I vararg di Scala non sono matrici?

Nota

ho trovato diverse domande su Stack Overflow su Scala varargs, ma tutti sono di chiamare Java varargs metodi o sulla conversione Scala elenca ad array.

risposta

55

Append :_* al parametro in test come questo

test(some:_*) 

e dovrebbe funzionare come previsto.

Se ti chiedi cosa faccia quel magico :_*, fai riferimento a this question.

25

E 'semplice:

def test(some:String*){} 

def call() { 
    val some = Array("asd", "zxc") 
    test(some: _*) 
}