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!") } }
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.
Bab terbaru
- Scala 文件 I/O 2016-10-18
- Scala 提取器(Extractor) 2016-10-18
- Scala 异常处理 2016-10-18
- Scala 正则表达式 2016-10-18
- Scala 模式匹配 2016-10-18
- Scala Trait(特征) 2016-10-18
- Scala 类和对象 2016-10-18
- Scala Iterator(迭代器) 2016-10-18
Kursus berkaitan
- Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP) 2022-02-17
- Mari kita bercakap secara ringkas tentang memulakan perniagaan dalam PHP 2023-01-04
- Pembangunan Tianlongbabu praktikal skala besar bagi rangka kerja MVC versi Mini meniru laman web ensiklopedia perkara yang memalukan 2018-01-25
- Pengesahan log masuk dan papan mesej klasik 2018-03-02
- Bermula dengan Pembangunan Praktikal PHP: Penciptaan PHP Pantas [Forum Perniagaan Kecil] 2022-06-28
- Mula Pantas Node.JS Versi Penuh 2022-09-30
- Tulis rangka kerja PHP MVC anda sendiri (40 bab secara mendalam/butiran besar/mesti dibaca untuk pemula untuk maju) 2022-12-08
- Tutorial video musim bunga askar kuda 2022-04-12
-
Perluasan pengetahuan
-
Navigasi Tutorial