Scala コードで次のような問題が発生しました。
クラス MyClass { ... val a = 新しい A; インポート a._ }
とはどういうval a = new A; import a._
意味ですか?
オブジェクトのメソッドと変数をインポートします。したがって、 を呼び出したい場合は、代わりa.foo()
に呼び出すことができますfoo()
。
a
これは、オブジェクト型のすべてのメソッドと変数が、A
明示的に言及しなくても、このブロック (スコープ) で使用できるようになったことを意味しa
ます。したがってA
、メソッドがある場合は、次のようにbar()
言うことができます。
bar()
それ以外の
a.bar()
ただし、 が定義されている範囲内のみimport
です。
あなたが精通しているべき何かでこれを説明しましょう:
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.lang
scala
scala.Predef