15

Scala コードで次のような問題が発生しました。

クラス MyClass {
  ...
  val a = 新しい A; インポート a._

}

とはどういうval a = new A; import a._意味ですか?

4

3 に答える 3

15

オブジェクトのメソッドと変数をインポートします。したがって、 を呼び出したい場合は、代わりa.foo()に呼び出すことができますfoo()

于 2012-05-10T15:27:24.217 に答える
9

aこれは、オブジェクト型のすべてのメソッドと変数が、A明示的に言及しなくても、このブロック (スコープ) で使用できるようになったことを意味しaます。したがってA、メソッドがある場合は、次のようにbar()言うことができます。

bar()

それ以外の

a.bar()

ただし、 が定義されている範囲内のみimportです。

于 2012-05-10T15:28:08.863 に答える
7

あなたが精通しているべき何かでこれを説明しましょう:

println("Hello world")

問題は、なぜそれが機能するのかということです。printlnメソッドで呼び出されるオブジェクトはありませんapply。これは、そのようなコードの通常の説明です。まあ、それが起こると、上記のコードは実際にこれを行っています:

Predef.println("Hello world")

つまり、printlnはオブジェクトのメソッドscala.Predefです。では、上記のようにどのように使用できますか?まあ、このように:

import scala.Predef._
println("Hello world")

安定した参照の内容 (つまり、varまたはaではない)をインポートするdefと、そのメソッドに接頭辞を付けることなく使用できるようになりますreference.

また、内部で定義された暗黙的な変換も利用可能になります。これにより、内部で定義された暗黙的な変換も利用可能になります。Scalaは、scala.Predefの内容をインポートします(この順序で、後者が前の変換をオーバーライドします)。java.langscalascala.Predef

于 2012-05-10T17:35:06.883 に答える