Tutorial Scala

Baca(12956) masa kemas kini(2022-04-19)

Tutorial Scala Scala ialah bahasa pengaturcaraan berbilang paradigma, direka untuk menyepadukan pelbagai ciri pengaturcaraan berorientasikan objek dan pengaturcaraan berfungsi.


Scala ialah bahasa pengaturcaraan berbilang paradigma, bahasa pengaturcaraan yang serupa dengan Java Ia direka untuk melaksanakan bahasa berskala dan menyepadukan pelbagai ciri pengaturcaraan berorientasikan objek dan pengaturcaraan berfungsi.

Program Scala Pertama

Berikut ialah program Hello World biasa yang ditulis dalam Scala:

Contoh

 object HelloWorld extends App {
   println("Hello, world!")
 }

Jalankan Contoh»

Klik butang "Buat Contoh"

Instance

object HelloWorld {
   def main(args: Array[String]) {
     println("Hello, world!")
   }
 }

Run Instance»

Klik butang "Run Instance" untuk melihat instance dalam talian

Sila ambil perhatian bagaimana ia serupa dengan aplikasi Hello World Java. Satu perbezaan ketara ialah versi Scala program Hello World tidak menandakan kaedah utama sebagai kaedah statik melalui kata kunci statik, tetapi menggunakan kata kunci objek untuk mencipta satu tunggal.

Dengan mengandaikan bahawa program itu disimpan sebagai fail HelloWorld.scala, ia boleh disusun melalui baris arahan berikut:

> scalac HelloWorld.scala

Untuk menjalankan:

> scala -classpath . HelloWorld

Bukankah ini serupa dengan menyusun dan menjalankan program "Hello World" Java? Malah, model kompilasi dan pelaksanaan Scala adalah setara dengan Java, jadi ia juga serasi dengan alat binaan Java, seperti Ant.

Anda juga boleh menjalankan program secara langsung menggunakan penterjemah Scala, menggunakan pilihan -i (muat daripada kod fail ) dan pilihan -e (untuk menjalankan kod tambahan, anda perlu benar-benar melaksanakan kaedah objek HelloWorld):

> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'

Petua: Tutorial Scala kami akan membantu anda mempelajari pengetahuan Scala dari pemula hingga lanjutan. Jika anda mempunyai sebarang soalan, sila pergi ke laman web PHP ChineseScala Community untuk bertanya soalan anda, dan netizen yang bersemangat akan menjawabnya untuk anda.

Ciri Scala

Paradigma Pengaturcaraan yang Disokong

  • Ciri Berorientasikan Objek

Scala ialah bahasa berorientasikan objek tulen, di mana setiap nilai adalah objek. Jenis data dan tingkah laku sesuatu objek diterangkan mengikut kelas dan sifat. Terdapat dua cara untuk melanjutkan mekanisme abstraksi kelas. Satu pendekatan ialah warisan subkelas, dan pendekatan lain ialah mekanisme campuran yang fleksibel. Kedua-dua pendekatan ini dapat mengelakkan masalah pewarisan berbilang.

  • Pengaturcaraan fungsional

Scala juga merupakan bahasa berfungsi, dan fungsinya juga boleh digunakan sebagai nilai. Scala menyediakan sintaks ringan untuk mentakrifkan fungsi tanpa nama, menyokong fungsi tertib lebih tinggi, membenarkan sarang berbilang peringkat fungsi dan menyokong kari. Kelas kes Scala dan padanan corak terbina dalamnya adalah setara dengan jenis algebra yang biasa digunakan dalam bahasa pengaturcaraan berfungsi.

Selain itu, pengaturcara boleh menggunakan padanan corak Scala untuk menulis kod seperti ungkapan biasa untuk memproses data XML. Dalam situasi ini, keupayaan pemahaman senarai berguna untuk menulis pertanyaan formula.

Memandangkan JVM tidak menyokong rekursi ekor, Scala tidak dapat menyokong sepenuhnya pengoptimuman rekursi ekor. Walau bagaimanapun, pengkompil Scala boleh mengoptimumkan beberapa rekursi ekor mudah ke dalam gelung.

Kod berikut melaksanakan algoritma isihan pantas dalam gaya berfungsi, yang boleh dibandingkan dengan contoh isihan pantas Erlang:

def qsort(list: List[Int]): List[Int] = list match {
  case Nil => Nil
  case pivot :: tail =>
    val(smaller, rest) = tail.partition(_ < pivot)
    qsort(smaller) ::: pivot :: qsort(rest)
}

Taipan statik

Scala mempunyai sistem jenis dan semakan masa kompilasi untuk memastikan keselamatan dan konsistensi kod tersebut. Sistem jenis secara khusus menyokong ciri-ciri berikut:

  • kategori generik,

  • kovarians dan kontravarians,

  • anotasi,

  • pada parameter sempadan bawah dan bawah

  • menggabungkan kategori dan abstraksi Jenis sebagai ahli objek,

  • jenis komposit,

  • secara eksplisit menyatakan jenis apabila merujuk diri mereka sendiri,

  • pandangan,

  • kaedah polimorfik

Extensibility

Scala direka bentuk dengan hakikat bahawa dalam amalan, pembangunan aplikasi khusus domain selalunya memerlukan sambungan bahasa khusus untuk domain tersebut. Scala menyediakan beberapa mekanisme bahasa unik yang menjadikannya mudah dan lancar untuk menambah binaan bahasa baharu dalam bentuk perpustakaan:

  • Sebarang kaedah boleh digunakan sebagai operator awalan atau postfix,

  • penutupan boleh dibina secara automatik berdasarkan jenis yang dijangkakan.

Menggunakan dua ciri di atas secara gabungan membolehkan anda mentakrifkan pernyataan baharu tanpa melanjutkan sintaks atau menggunakan ciri pengaturcaraan meta seperti makro.

Concurrency

Scala menggunakan Actor sebagai model concurrencynya Actor ialah entiti seperti benang yang menghantar dan menerima mesej melalui peti mel. Pelakon boleh menggunakan semula benang, jadi berjuta-juta Pelakon boleh digunakan dalam program, manakala benang hanya boleh mencipta beribu-ribu. Dalam versi selepas 2.10, Akka digunakan sebagai pelaksanaan Actor lalainya. [20] Kod berikut ialah pelaksanaan EchoServer menggunakan mod Actor

val echoServer = actor(new Act {
  become {
    case msg => println("echo " + msg)
  }
})
echoServer ! "hi"

Mod aktor boleh memudahkan pengaturcaraan serentak dan memanfaatkan keupayaan CPU berbilang teras.

Apa yang merangkumi manual tutorial Scala ini

Tutorial Scala ini merangkumi semua pengetahuan asas dan lanjutan Scala, termasuk sintaks Scala asas, jenis data Scala, pembolehubah Scala, pengendali Scala, fungsi Scala, rentetan Scala, kelas dan objek Scala Tunggu semua pengenalan kepada pengetahuan Scala asas dan lanjutan.

Petua: Setiap bab tutorial ini mengandungi banyak contoh Scala Anda boleh terus klik butang "Jalankan Contoh" untuk melihat keputusan dalam talian. Contoh-contoh ini akan membantu anda memahami dan menggunakan Scala dengan lebih baik.