Ich möchte einer Variablen eine bestehende Funktion zuweisen. Nach this Seite ist es so einfach wie:Bestehende Funktion der Variablen zuweisen
val p = scala.math.pow(_, _)
pow: (Double, Double) => Double = <function2>
aber wenn ich versuche, die gleiche Sache in meinem Code zu tun, funktioniert es nicht.
def main(args: Array[String]) = {
val p = scala.math.min(_, _)
val func = if (args(0).equalsIgnoreCase("min")) math.min(_,_) else math.max(_,_)
}
dachte ich, das vielleicht durch die Verwendung von if
und else
Zustand in derselben Zeile, aber ich Fehlermeldung erhalten, wenn der Wert der Variablen p
auch zuweisen.
Fehler erhalte ich:
Parametertyp fehlt für eine erweiterte Funktion ((x 1 $, x $ 2) => scala.math.min (x $ 1, x $ 2))
Warum funktioniert es nicht für mich und wie kann ich es beheben?
'val p = scala.math.min _' – dmitry
@dmitry Warum benötigt Powder 2 Unterstriche und min und max nur 1? Wie weißt du, ob 1 Unterstrich ausreicht? –
Ich würde empfehlen, die oben gewählte Antwort hier zu lesen, insbesondere das Endsegment. Auch scala.math.pow _ einzelner Unterstrich funktioniert genauso gut. Die kurze Antwort zu wissen, was ausreichend ist, ist zu sehen, ob es erfolgreich kompiliert :) http://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-andunderscore-in-scala – Tanjin