Apa perbedaan antara
object Application extends App {
println("Hello World")
}
dan
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Apa perbedaan antara
object Application extends App {
println("Hello World")
}
dan
object Application {
def main(args: Array[String]): Unit = {
println("Hello World");
}
}
Jawaban:
Sifat Aplikasi adalah cara mudah untuk membuat program skala yang dapat dieksekusi. Perbedaan dengan metode altenatif utama adalah (terlepas dari perbedaan sintaksis yang jelas) bahwa sifat Aplikasi menggunakan fitur initalisasi tertunda.
Dari catatan rilis untuk 2.9 (lihat http://www.scala-lang.org/old/node/9483 )
Objek yang mewarisi sifat Aplikasi malah menggunakan fitur inisialisasi tertunda Scala 2.9 untuk mengeksekusi seluruh isi sebagai bagian dari metode utama yang diwariskan.
Fitur baru lainnya dari skema Aplikasi adalah argumen baris perintah sekarang dapat diakses melalui nilai argumen (yang diwarisi dari App sifat)
main
metode dan badan tidak dieksekusi seperti yang diharapkan. Apakah itu dieksekusi di beberapa titik setelah masuk ke utama?
main
metode di mana App
penyihir bisa dicampur ke Application
objek Anda . Tidak ada keajaiban yang terjadi di luar fakta bahwa inisialisasi yang tertunda adalah yang mengeksekusi tubuh Application
objek Anda .
Kedua kasus ini tidak sama pada skrip scala.
object extends App
" scala MyObject.scala
" tidak dieksekusi oleh perintah " ", tetapi objek yang berisi metode utama dieksekusi dengan scala MyObject.scala
perintah " ". Yang digambarkan sebagai scala mencari objek dengan metode utama untuk pembuatan skrip.
Saat menggunakan REPL atau scala workseet dari Eclipse, perlu memanggil MyObject.main(Array[String]())
secara eksplisit untuk kedua kasus.
Tip sederhana ini bermanfaat bagi pemula seperti saya.