55 Stimmen

Verwendung von varargs aus Scala

Ich raufe mir die Haare bei dem Versuch, herauszufinden, wie ich Folgendes tun kann:

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, o :: List(os:_*)) )
}

Es gibt einen Grund, warum ich die Methode mit einer o und ein os Seq getrennt. Im Grunde genommen wird die Format-Methode mit einem einzigen Objektparameter (vom Typ List ). Versuchen:

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, (o :: List(os:_*))).toArray )
}

Ich erhalte einen Typfehler:

gefunden: Array[Any]

erforderlich Seq[java.lang.Object]

Ich habe versucht, Casting, die kompiliert, aber nicht für so ziemlich den gleichen Grund wie das erste Beispiel. Wenn ich versuche

println(String.format(msg, (o :: List(os:_*)) :_* ))

kann nicht kompiliert werden, da die Konvertierung nicht eindeutig ist ( any2ArrowAssoc y any2stringadd )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X