Apa sebenarnya arti impor ini di Scala?

Saya menemukan yang berikut ini dalam kode Scala:

class MyClass {
  ...
  val a = new A; import a._

}

Apa sebenarnya arti val a = new A; import a._?


person Michael    schedule 10.05.2012    source sumber


Jawaban (3)


Ini mengimpor metode dan variabel dari objek a. Jadi kalau mau menelpon a.foo(), tinggal menelpon foo() saja.

person sepp2k    schedule 10.05.2012

Artinya semua metode dan variabel objek a bertipe A sekarang tersedia di blok (cakupan) ini tanpa menyebutkan a secara eksplisit. Jadi jika A memiliki metode bar() kini Anda dapat mengatakan:

bar()

alih-alih

a.bar()

tetapi hanya dalam lingkup di mana import didefinisikan.

person Tomasz Nurkiewicz    schedule 10.05.2012

Mari kita jelaskan hal ini dengan sesuatu yang harus Anda ketahui:

println("Hello world")

Pertanyaannya adalah: mengapa itu berhasil? Tidak ada objek bernama println dengan metode apply, yang merupakan penjelasan biasa untuk kode yang terlihat seperti itu. Nah, yang terjadi, kode di atas benar-benar melakukan hal ini:

Predef.println("Hello world")

Dengan kata lain, println adalah metode pada objek scala.Predef. Lalu bagaimana cara menggunakannya seperti di atas? Nah, seperti ini:

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

Mengimpor konten referensi stabil (yaitu, bukan var atau def) akan membuat metodenya tersedia tanpa harus mengawalinya dengan reference..

Itu juga membuat implisit apa pun yang ditentukan di dalamnya tersedia, yang merupakan cara konversi implisit yang ditentukan di dalam scala.Predef juga tersedia -- Scala mengimpor konten java.lang, scala dan scala.Predef (dalam urutan itu, sehingga yang terakhir menimpa yang sebelumnya) .

person Daniel C. Sobral    schedule 10.05.2012