2016-09-19 12 views
0

私はスカラーメソッドについて学んでいましたが、本質的には多少似ていますが、それらを呼び出す際に混乱する2つのコード例を作成しました。スカラコード - 奇妙な振る舞い

方法#1

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

それは何も返さないので、Unit入力するには、このリゾート。

方法#2

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

Unitこのリゾートは、同様に、しかし、中括弧で()を加えます。単位はパラメータを取るが、私はsomeTestMethodのように呼び出した場合はうまく動作しません:2つの方法の間の違いは、私がsomeTestMethod()のような最初のメソッドを呼び出した場合、Scalaのシェル/コンパイラは

エラーを言っていることの通知である何

括弧なしで。

また、2番目の方法は、いずれの方法でもanotherTestMethodまたはanotherTestMethod()と呼び出すことができるという意味では、間違っているようです。

+0

:これも動作http://docs.scala-lang.org/style/method-invocation.htmlリンクについて – Jatin

+0

感謝を説明します。 .insightful。 –

答えて

-2

メソッドにパラメータを渡したくない場合は、最初のメソッドを使用します。

いくつかのパスパラメータを渡す場合は、2つ目のパラメータを角かっこで囲み、いくつかのパラメータを渡してメソッド内で使用します。例えば

:重複は別に

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

    someTestMethod1(10) 
+0

これはほとんど完全に間違っています。もちろん、パラメータを渡す必要がありますが、パラメータがない場合は違いがあり、リンクされていない複製の説明のように、常に使用する必要はありません。 –