2016-09-19 6 views
0

Ich lernte etwas über Scala-Methoden und ich erstellte zwei Codebeispiele, die in ihrer Art etwas ähnlich sind, aber beim Aufruf von ihnen verwirrt sind.Scala-Code - Seltsames Verhalten

Methode # 1

def someTestMethod = { 
    println("Inside a test method") 
} 

Diese Resorts zu einem Unit Typ, da sie nichts zurückkommt.

Methode # 2

def anotherTestMethod() = { 
    println("Inside a test method") 
} 

Diese Resorts Unit auch, aber mit einer geschweiften Klammer () hinzugefügt.

Was ist der Unterschied zwischen den beiden Methoden ist, feststellen, dass, wenn ich die erste Methode wie someTestMethod() nennen, die scala Shell/Compiler

Fehler sagt: Einheit keine Parameter übernimmt, aber funktioniert gut, wenn ich wie someTestMethod nennen ohne die Klammern.

Auch die zweite Methode scheint narrensicher, in dem Sinne, dass es so oder so genannt werden kann anotherTestMethod oder anotherTestMethod(), warum ist es so?

+0

Neben dem Duplikat: Diese erklären auch das Verhalten http://docs.scala-lang.org/style/method-invocation.html – Jatin

+0

Danke für die Links. .insightful. –

Antwort

-2

Wenn Sie keine Parameter an die Methode übergeben möchten, verwenden Sie die erste Methode.

Wenn Sie einige Pass-Parameter übergeben möchten, verwenden Sie die zweite mit Klammern und übergeben Sie einige Parameter und verwenden Sie sie innerhalb der Methode.

Zum Beispiel:

def someTestMethod1(count : Int) = { 
    println("Inside a test method"+count) 
    } 

    someTestMethod1(10) 
+0

Das ist fast völlig falsch. Natürlich muss man() Parameter übergeben, aber es gibt einen Unterschied ohne Parameter und man will es nicht immer ohne verwenden (wie das Linked-Duplicate erklärt). –