Sintaks asas Scala
Jika anda seorang pengaturcara Java sebelum ini dan mengetahui asas bahasa Java, anda boleh mempelajari sintaks asas Scala dengan cepat.
Perbezaan terbesar antara Scala dan Java ialah titik koma ;
Kita boleh menganggap program Scala sebagai koleksi objek yang melaksanakan penghantaran mesej dengan memanggil kaedah masing-masing. Seterusnya, mari kita fahami konsep kelas, objek, kaedah dan pembolehubah contoh:
Objek - Objek mempunyai atribut dan gelagat. Contohnya: sifat anjing termasuk: warna, nama dan tingkah laku termasuk: menyalak, berlari, makan, dsb. Objek ialah contoh kelas.
Kelas - Kelas ialah abstraksi objek dan objek ialah contoh konkrit bagi kelas.
Kaedah - Kaedah menerangkan tingkah laku asas Kelas boleh mengandungi berbilang kaedah.
Medan - Setiap objek mempunyai set pembolehubah contoh yang unik, iaitu medan. Sifat objek dibuat dengan memberikan nilai kepada medan.
Program Scala pertama
Pengaturcaraan interaktif
Pengaturcaraan interaktif tidak memerlukan penciptaan fail skrip dan boleh dipanggil dengan yang berikut arahan:
$ scala Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31). Type in expressions to have them evaluated. Type :help for more information. scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! scala>
Borang skrip
Kami juga boleh melaksanakan kod dengan mencipta fail HelloWorld.scala Kod HelloWorld.scala adalah seperti berikut:
object HelloWorld { /* 这是我的第一个 Scala 程序 * 以下程序将输出'Hello World!' */ def main(args: Array[String]) { println("Hello, world!") // 输出 Hello World } }
. Seterusnya Kami menggunakan arahan scalac untuk menyusunnya:
$ scalac HelloWorld.scala $ ls HelloWorld$.class HelloWorld.scala HelloWorld.class
Selepas penyusunan, kita dapat melihat bahawa fail HelloWorld.class dijana dalam direktori, yang boleh dijalankan pada Mesin Maya Java (JVM).
Selepas penyusunan, kita boleh menggunakan arahan berikut untuk melaksanakan program:
$ scala HelloWorld Hello, world!Contoh dalam talian»
Sintaks asas
Sintaks asas Scala memerlukan perhatian Perkara berikut:
Sensitif huruf besar-kecil - Scala sensitif huruf besar-besaran, yang bermaksud bahawa pengecam Hello dan hello akan mempunyai makna yang berbeza dalam Scala.
Nama Kelas - Gunakan huruf besar pada huruf pertama semua nama kelas.
Jika beberapa perkataan diperlukan untuk membentuk nama kelas, huruf besar huruf pertama setiap perkataan.
Contoh: kelas MyFirstScalaClassNama kaedah - Huruf pertama bagi semua nama kaedah ialah huruf kecil.
Jika beberapa perkataan digunakan untuk membentuk nama kaedah, huruf pertama setiap perkataan hendaklah menggunakan huruf besar.
Contoh: def myMethodName()Nama Fail Program - Nama fail atur cara sepatutnya sepadan dengan nama objek.
Apabila menyimpan fail, anda harus menyimpannya menggunakan nama objek (ingat Scala adalah sensitif huruf besar-besaran) dan tambahkan ".scala" sebagai sambungan fail. (Jika nama fail dan nama objek tidak sepadan, program tidak akan disusun).
Contoh: Katakan "HelloWorld" ialah nama objek. Kemudian fail itu hendaklah disimpan sebagai 'HelloWorld.scala"def main(args: Array[String]) - Program Scala mula memproses daripada kaedah main(), yang merupakan bahagian kemasukan program wajib bagi setiap program Scala.
Pengecam
Scala boleh menggunakan dua bentuk pengecam, abjad angka dan simbolik.
Nombor aksara bermula dengan huruf atau garis bawah, dan boleh diikuti dengan huruf atau nombor Simbol "$" juga dianggap sebagai huruf dalam Scala. Walau bagaimanapun, pengecam bermula dengan "$" dikhaskan untuk digunakan dengan pengecam yang dijana oleh pengkompil Scala, dan aplikasi harus mengelak daripada menggunakan pengecam bermula dengan "$" untuk mengelakkan konflik.
Peraturan penamaan Scala menggunakan peraturan penamaan unta yang serupa dengan Java, dengan huruf kecil aksara pertama, seperti toString. Aksara pertama nama kelas masih menggunakan huruf besar. Elakkan juga menggunakan pengecam yang berakhir dengan garis bawah untuk mengelakkan konflik. Pengecam simbol mengandungi satu atau lebih simbol, seperti +, :, ?, dsb., seperti:
+ ++ ::: < ?> :->
Scala akan menggunakan pengecam yang terlepas dalam pelaksanaan dalaman, seperti: -> lebih besar untuk mewakili simbol ini. Jadi jika anda perlu mengakses kaedah :-> dalam kod Java, anda perlu menggunakan nama dalaman Scala $colon$minus$greater.
Pengecam bercampur terdiri daripada pengecam abjad angka diikuti dengan satu atau lebih simbol, seperti unary_+ yang merupakan nama pelaksanaan dalaman Scala bagi kaedah +. Pengecam literal ialah rentetan yang ditakrifkan menggunakan ", seperti `x` `hasil`.
Anda boleh menggunakan sebarang pengecam Scala yang sah antara " dan Scala akan mentafsirkannya sebagai pengecam Scala, Penggunaan biasa ialah kaedah hasil of Thread. Anda tidak boleh menggunakan Thread.yield() dalam Scala kerana yield ialah kata kunci dalam Scala Anda mesti menggunakan Thread.`yield`() untuk menggunakan kaedah ini.
Kata Kunci Scala
Jadual berikut menyenaraikan kata kunci simpanan skala, kami tidak boleh menggunakan kata kunci berikut sebagai pembolehubah:
abstract | case | catch | class |
def | do | else | extends |
false | final | finally | for |
forSome | if | implicit | import |
lazy | match | new | null |
object | override | package | private |
protected | return | sealed | super |
this | throw | trait | try |
true | type | val | var |
while | with | yield | |
- | : | = | => |
<- | <: | <% | >: |
# | @ |
Ulasan Scala
Scala serupa dengan Java dan menyokong ulasan satu baris dan berbilang baris. Komen berbilang baris boleh bersarang, tetapi ia mesti bersarang dengan betul Satu simbol permulaan komen sepadan dengan satu simbol hujung. Komen akan diabaikan semasa penyusunan Scala Contohnya adalah seperti berikut:
object HelloWorld { /* 这是一个 Scala 程序 * 这是一行注释 * 这里演示了多行注释 */ def main(args: Array[String]) { // 输出 Hello World // 这是一个单行注释 println("Hello, world!") } }
Baris dan ruang kosong
Jika baris hanya mengandungi ruang atau ulasan, Scala akan menganggapnya sebagai kosong. baris dan akan mengabaikannya. Teg boleh dipisahkan dengan ruang atau ulasan.
Baris Baharu
Scala ialah bahasa berorientasikan baris, pernyataan boleh ditamatkan dengan koma bertitik (;) atau baris baharu. Dalam program Scala, koma bertitik pada akhir pernyataan biasanya adalah pilihan. Anda boleh memasukkan satu jika anda mahu, tetapi jika terdapat hanya satu dalam satu baris Tidak perlu menulis kenyataan. Sebaliknya, jika anda menulis berbilang pernyataan dalam satu baris maka koma bertitik diperlukan. Contohnya,
val s = "php中文网"; println(s)
Pakej Scala
tentukan pakej
Scala menggunakan kata kunci pakej untuk mentakrifkan pakej. Terdapat dua cara untuk mentakrifkan kod ke dalam pakej Scala:
Kaedah pertama adalah sama seperti Java, mentakrifkan nama pakej dalam pengepala fail Dalam kaedah ini, semua kod berikutnya akan diletakkan dalam pakej. Contohnya:
package com.php class HelloWorld
Kaedah kedua agak serupa dengan C#, seperti:
package com.php { class HelloWorld }
Kaedah kedua membolehkan anda mentakrifkan berbilang pakej dalam satu fail.
Rujukan
Scala menggunakan kata kunci import untuk merujuk pakej.
import java.awt.Color // 引入Color import java.awt._ // 引入包内所有成员 def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent ... // 因为引入了java.awt,所以可以省去前面的部分 }
Penyata import boleh muncul di mana-mana, bukan hanya di bahagian atas fail. Kesan import berlanjutan dari awal hingga akhir blok pernyataan. Ini sangat mengurangkan kemungkinan konflik nama.
Jika anda ingin memperkenalkan beberapa ahli pakej, anda boleh menggunakan pemilih:
import java.awt.{Color, Font} // 重命名成员 import java.util.{HashMap => JavaHashMap} // 隐藏成员 import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了
Nota: Secara lalai, Scala akan sentiasa Memperkenalkan java. lang._, scala._ dan Predef._ juga boleh menerangkan sebab pakej yang bermula dengan skala meninggalkan skala apabila menggunakannya.