Wie übergebe ich ein Scala-Array an die Scala-Vararg-Methode?

76

Betrachten Sie den folgenden Code:

private def test(some:String*){

}

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

Es druckt expect String, found Array[String]Warum? Sind Scala-Varargs keine Arrays?

Hinweis

Ich habe im Stapelüberlauf mehrere Fragen zu Scala-Varargs gefunden, aber bei allen geht es darum, Java-Varargs-Methoden aufzurufen oder Scala-Listen in Arrays zu konvertieren.

Kirsche
quelle

Antworten:

122

Anfügen :_*an den Parameter in testwie diese

test(some:_*)

Und es sollte so funktionieren, wie Sie es erwarten.

Wenn Sie sich fragen, was diese Magie :_*bewirkt, beziehen Sie sich bitte auf diese Frage .

Yuhuan Jiang
quelle
44

Es ist einfach:

def test(some:String*){}

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