Ich bin neu in Scala. Bitte sagen Sie den Unterschied zwischenFunktionen und Funktionsliterale in scala
def fun(t: Int => Int):Unit = {
und
def fun(t: =>Int):Unit {
und
def fun(t:=>Int):Unit { (without space b/w ":" and "=>"))
Ich bin neu in Scala. Bitte sagen Sie den Unterschied zwischenFunktionen und Funktionsliterale in scala
def fun(t: Int => Int):Unit = {
und
def fun(t: =>Int):Unit {
und
def fun(t:=>Int):Unit { (without space b/w ":" and "=>"))
def fun(t: Int => Int):Unit
ist eine Methode, die ein einziges Argument, t
. Sein Typ Int => Int
ist eine Funktion, die eine Int
übernimmt und eine Int
zurückgibt. Der Rückgabetyp fun
ist jedoch Unit
.
def fun(t: =>Int):Unit
ist eine Methode, die ein call by name Argument t
akzeptiert. Der Rückgabetyp dieser Methode ist wiederum Unit
.
Siehe auch What is "Call By Name"?.
Es gibt keinen Unterschied zwischen der zweiten und dritten Methode.
Danke für die Antwort. aber ist "def fun (t: Int => Int): Unit" auch namentlich anrufbar? –
Nein seit '=> 'Präfixe ein Anruf nach Name Argument. Es ist nicht in dem Fall, dass Sie erwähnt haben. –
Es tut mir leid, aber können Sie es ausarbeiten. Wenn ich den Code mit def Spaß (t: Int => Int): Einheit ausgeführt und eine Funktion in Spaß übergeben habe, wurde diese Funktion nur aufgerufen, wenn ich die Variable "t" verwendet habe. Also, heißt es nicht namentlich? –