2016-09-14 7 views
1

のIntelliJ IDEAでオブジェクトを評価しません。私が見つけた(Martin Odresky's own examples in Functional Programming in Scala courseのような)信頼性の高いリソースは、object Testの内容が実行されると思います。私のソフトウェアは、次のとおりです。Scalaのワークシートは、この非常に単純なワークシートの内容は、問題を示してい2016.2

  • OS Xエルキャピタン
  • のIntelliJ IDEA 2016.2
  • SBTプラグイン1.8.0
  • SBTバージョン0.13.12
  • Scalaのプラグイン2016年2月1日
  • Scalaのバージョン2.11 .8
+0

'オブジェクトテストの内容が実行されると期待しています。実行するとは思わないでしょう。ワークシートは素晴らしいです。私はそれをするためにreplを期待しませんでした – Jatin

+1

私が見つけたすべての例(JetBrainsウェブサイト自体のページを含む)には、正確にそのように働くワークシートが示されています。私はそれを私の答えに加えました。 – ddinchev

答えて

5

私は、これはあなたが欲しいものだと思う:

ワークシートがどのように動作する
object Test { 
    println("This does not print!") 
    add(5, 6) 

    println("This however prints!") 
    add(5, 6) 

    def add(a: Int, b: Int): Int = a + b 
} 

あなたはobject範囲外で定義されたオブジェクトと何を定義した場合、それはTest extends Appとしてそれを実行すること、です。 intelijページに表示される内容

objectスコープ外のステートメントは、objectとして扱われ、コンパイラは他のものと同様に初期化します。これはあなたが経験していることです。

+0

パーフェクト、答えてくれてありがとう!定義されたオブジェクトを実行するにはどうすればよいですか(シングルトンだと思いますか?) – ddinchev

+0

次のようにして実行することができます: 'Test' – Samar

+1

' object'の本体はコンストラクタ本体です。最初に呼び出すと、クラスローダーがそのクラスをロードするときに本体が実行されます。 その後、次回はコンストラクタの初期化を呼び出しません。 – Jatin

2

スカラワークシートは、すべてのコードが内部にある場合、オブジェクトテスト{....}の内容を実行しますそのオブジェクト。オブジェクトの外にいくつかのコードがある場合、Testオブジェクトを定義するだけです(実行しないでください)。

object Test { 
    println("This does not print!") 
    def add(a: Int, b: Int): Int = {print("Sum:" + a + b); a + b} 
    add(2, 2) 
} 

// defined the above Test object 

Test // executes the Test object 
関連する問題