2017-07-18 1 views
0

明らかにタイトルからスカラー(バージョン2.12.1を使用)が新しくなりました。私はIntelliJに自分の最初のアプリを書いています。 ScalaのJavaでの同等性については、thisになっています。私はthisselfclassOf[]を試しましたが、IntelliJを無視してもIntelliJが文句を言うことはなく、コードはコンパイルされません。ここに私が持っているもの:Scala 'this'と 'self'がシンプルなAppで動作しない

import ch.qos.logback.classic.Logger 

object Main extends App { 
    val logger = Logger[Main] 
} 

ロガーパッケージはSBTで正しくインポートされています。ただし、シンボルMainは解決できません。私はそれをあまり普及させないようにパッケージに貼りつけてみたが、Logger[me.justin.Main]のようなことをやっているが、それもうまくいきません。

私はアプリを拡張していて、いくつかの問題を引き起こしているとも思っていましたが、使用しているscalaのバージョンで修正されていると思いますか?おそらく適用されないでしょうか?

私はすべてGoogledです。助けてください!

+0

'App'何です? –

+0

これは、 'Main'オブジェクトを実行可能にすることを可能にするスカラ特性です。基本的に、このオブジェクトにはJavaのような主要なメソッドがあります。 – Justin

答えて

1

Scalaのオブジェクトがどのように機能するかによって、あなたはうんざりしています。

val logger = Logger[Foo] // `Foo` here is the type of the class. 

しかし、私たちが望んだ場合:私たちはクラスのロガーを望んでいた場合

class Foo 

object Foo 

は、我々は明白なことを行うだろう。我々は、クラスFooと同じのためのコンパニオンオブジェクトを持っていたとしましょうオブジェクトの型を参照するには?クラスの種類から明確にする必要があります。

val logger = Logger[Foo.type] // `Foo.type` here is the type of the object. 

をだからあなたの場合には:答えは、オブジェクトの上に特殊なtypeメンバーを使用することです

val logger = Logger[Main.type] 
+0

ありがとう!クラスとオブジェクトの違いについて読まなくてはなりません。 – Justin

関連する問題