Scala พื้นฐานไวยากรณ์
หากคุณเป็นโปรแกรม Java ก่อนและเรียนรู้พื้นฐานของภาษา Java เพื่อให้คุณได้อย่างรวดเร็วสามารถเรียนรู้พื้นฐานไวยากรณ์สกาล่า
Scala และ Java ความแตกต่างที่ใหญ่ที่สุดคือ: Scala อัฒภาคในตอนท้ายของคำสั่งนั้นเป็นตัวเลือก
เราสามารถคิดของโปรแกรม Scala เป็นคอลเลกชันของวัตถุโดยการโทรแต่ละวิธีการที่จะใช้การส่งข้อความ ต่อไปเรามาทำความเข้าใจชั้นแนวคิดของวัตถุวิธีตัวแปรเช่นนี้:
วัตถุ - วัตถุที่มีคุณสมบัติและพฤติกรรมตัวอย่างเช่น: แอตทริบิวต์สุนัขที่ชอบ: สีชื่อพฤติกรรม: โทรเรียกใช้กินและอื่น ๆ วัตถุที่เป็นตัวอย่างของชั้นเรียน
ชั้น - ชั้นเป็นวัตถุที่เป็นนามธรรมและวัตถุนั้นเป็นกรณีเฉพาะของชั้น
วิธี - วิธีการอธิบายในพระราชบัญญัติขั้นพื้นฐานระดับสามารถมีหลายวิธี
Fields - วัตถุแต่ละคนมีชุดที่เป็นเอกลักษณ์ของตัวเองของตัวแปรเช่น ได้แก่ สาขาคุณสมบัติของวัตถุที่ได้รับมอบหมายผ่านสนามที่จะสร้าง
โปรแกรม Scala แรก
การเขียนโปรแกรมแบบโต้ตอบ
การเขียนโปรแกรมแบบโต้ตอบไม่จำเป็นต้องสร้างไฟล์สคริปต์คุณสามารถเรียกใช้คำสั่งต่อไปนี้:
$ 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>
รูปแบบสคริปต์
นอกจากนี้เรายังสามารถสร้างไฟล์ HelloWorld.scala สั่งรันโค้ดรหัส HelloWorld.scala ดังนี้
object HelloWorld { /* 这是我的第一个 Scala 程序 * 以下程序将输出'Hello World!' */ def main(args: Array[String]) { println("Hello, world!") // 输出 Hello World } }
ต่อไปเราจะใช้คำสั่ง scalac รวบรวม:
$ scalac HelloWorld.scala $ ls HelloWorld$.class HelloWorld.scala HelloWorld.class
หลังจากรวบรวมเราสามารถมองเห็นไดเรกทอรีที่สร้างขึ้นภายใต้ไฟล์ HelloWorld.class ที่สามารถทำงานบนโปรแกรม Java Virtual Machine (JVM) บน
หลังจากรวบรวมเราสามารถใช้คำสั่งต่อไปที่จะดำเนินการโปรแกรม:
$ scala HelloWorld Hello, world!ตัวอย่างออนไลน์ >>
ไวยากรณ์พื้นฐาน
Scala ไวยากรณ์ขั้นพื้นฐานทราบต่อไปนี้:
case-sensitive - สกาล่าเป็นกรณีซึ่งหมายความว่าโลโก้ Hello Hello และมีความหมายที่แตกต่างกันใน Scala
ชื่อคลาส - สำหรับทุกชื่อชั้นตัวอักษรตัวแรกควรเป็นตัวพิมพ์ใหญ่
หากคุณจำเป็นต้องใช้คำไม่กี่คำจะเป็นชื่อชั้น, ตัวอักษรตัวแรกของแต่ละคำนิยาม
ตัวอย่าง: ระดับ MyFirstScalaClassชื่อวิธี - ตัวอักษรตัวแรกของชื่อวิธีการทั้งหมดพิมพ์เล็ก
หากคำหลายคำที่ใช้ในการก่อให้ชื่อของวิธีที่ตัวอักษรตัวแรกของแต่ละคำควรเป็นตัวพิมพ์ใหญ่
ตัวอย่าง: def myMethodName ()ชื่อไฟล์ - ชื่อของแฟ้มโปรแกรมที่ว่าควรตรงกับชื่อของวัตถุ
เมื่อคุณบันทึกไฟล์ก็ควรบันทึกชื่อวัตถุที่ใช้ (จำ Scala เป็นกรณี) และผนวก ".scala" นามสกุลไฟล์ (ถ้าชื่อไฟล์และวัตถุชื่อไม่ตรงกับโปรแกรมจะไม่รวบรวม)
ตัวอย่าง: สมมติว่า "HelloWorld" เป็นชื่อของวัตถุ แล้วไฟล์จะถูกบันทึกไว้เป็น 'HelloWorld.scala "def หลัก (args อาร์เรย์ [สตริง ]) - กาลา โปรแกรมจากหลัก () วิธีการเริ่มต้นการประมวลผลซึ่งเป็นส่วนจำเป็นของแต่ละโปรแกรมรายการโปรแกรม Scala
ตัวบ่งชี้
Scala สามารถใช้สองรูปแบบของตัวระบุตัวอักษรดิจิตอลและสัญลักษณ์
การใช้ตัวอักษรและตัวเลขต้นด้วยตัวอักษรหรือขีดความสามารถตามตัวอักษรหรือตัวเลข "$" เป็นสัญลักษณ์ใน Scala ยังถูกมองว่าเป็นตัวอักษร อย่างไรก็ตามการใช้ตัวบ่งชี้ที่ใช้ในการ "$" จุดเริ่มต้นของตัวระบุสงวน Scala คอมไพเลอร์ควรหลีกเลี่ยงการใช้ "$" เริ่มต้นระบุเพื่อหลีกเลี่ยงความขัดแย้ง
Scala และ Java ตั้งชื่อการประชุมโดยใช้อูฐการตั้งชื่อที่คล้ายกันตัวพิมพ์เล็กตัวอักษรตัวแรกเช่น toString ชื่อชั้นตัวแรกหรือตัวพิมพ์ใหญ่ นอกจากนี้ควรหลีกเลี่ยงเพื่อเน้นย้ำในตอนท้ายของตัวระบุเพื่อหลีกเลี่ยงการชน ระบุสัญลักษณ์ประกอบด้วยหนึ่งหรือมากกว่าสัญลักษณ์เช่น +: ฯลฯ เช่น:
+ ++ ::: < ?> :->
มันจะใช้ตัวระบุหนีเมื่อ Scala การดำเนินงานภายในเช่น: -> ใช้ $ ลำไส้ใหญ่ $ $ ลบมากขึ้นเพื่อเป็นตัวแทนของสัญลักษณ์ ดังนั้นหากคุณต้องการในการเข้าถึงรหัส Java: -> วิธีการที่คุณต้องใช้ Scala ชื่อภายในลำไส้ใหญ่ $ $ $ ลบมากขึ้น
ระบุตัวอักษรและตัวเลขผสมจากตัวระบุตามมาในภายหลังโดยหนึ่งหรือมากกว่าสัญลักษณ์เช่น Scala unary_ ชื่อ + วิธีการสำหรับเวลาการดำเนินงานภายใน ระบุตัวอักษรสำหรับสตริง "ถูกกำหนดไว้สำหรับ example` x`` yield`
คุณสามารถใช้ระบุ Scala ถูกต้องใด ๆ ในระหว่าง "สกาล่าจะถูกตีความเป็นตัวระบุ Scala, การใช้งานทั่วไปสำหรับหัวข้อของวิธีอัตราผลตอบแทนใน Scala คุณไม่สามารถใช้ Thread.yield () เป็นเพราะผลผลิตของ Scala คำหลักที่คุณต้องใช้ Thread.`yield` () เพื่อใช้วิธีนี้
คำหลักกาลา
ตารางต่อไปนี้แสดง Scala คำสงวนที่เราไม่สามารถใช้คำหลักดังต่อไปนี้เป็นตัวแปร:
นามธรรม | กรณี | จับ | ชั้น |
def | ทำ | อื่น | ขยาย |
เท็จ | สุดท้าย | ในที่สุด | สำหรับ |
forsome | ถ้า | โดยปริยาย | นำเข้า |
สันหลังยาว | การแข่งขัน | ใหม่ | โมฆะ |
วัตถุ | เอาชนะ | บรรจุภัณฑ์ | ส่วนตัว |
มีการป้องกัน | กลับ | ที่ปิดผนึก | ซุปเปอร์ |
นี้ | โยน | ลักษณะนิสัย | ความพยายาม |
จริง | ชนิด | Val | var |
ในขณะที่ | กับ | ผล | |
- | : | = | => |
<- | <: | <% | >: |
# | แอท |
ความคิดเห็นสกาล่า
Scala คล้ายกับหลาย Java สนับสนุนความเห็นบรรทัดเดียว ความคิดเห็นหลายสายสามารถซ้อนกัน แต่ต้องซ้อนกันอย่างถูกต้องความคิดเห็นที่ขึ้นต้นด้วยสัญลักษณ์ที่สอดคล้องกันที่จะยุติสัญลักษณ์ หมายเหตุ Scala คอมไพเลอร์จะถูกละเว้นตัวอย่างดังต่อไปนี้:
object HelloWorld { /* 这是一个 Scala 程序 * 这是一行注释 * 这里演示了多行注释 */ def main(args: Array[String]) { // 输出 Hello World // 这是一个单行注释 println("Hello, world!") } }
บรรทัดว่างและช่องว่าง
เพียงคนเดียวที่สอดคล้องกับพื้นที่หรือความคิดเห็น Scala จะคิดว่ามันเป็นบรรทัดว่างก็จะไม่สนใจมัน Marks สามารถเป็นช่องว่างหรือความเห็นที่จะแยก
ขึ้นบรรทัดใหม่
Scala เป็นภาษาสายที่มุ่งเน้นคำสั่งด้วยเครื่องหมายอัฒภาค (;) หรือสิ้นแบ่งบรรทัด โปรแกรมกาลาอัฒภาคในตอนท้ายของคำสั่งที่มักจะเป็นตัวเลือก หากคุณมีความยินดีที่จะป้อนหนึ่ง แต่ถ้ามีเพียงหนึ่งบรรทัดในงบหรือไม่เขียน ในทางตรงกันข้ามถ้าคุณเขียนคำสั่งหลายในแถวเพื่ออัฒภาคเป็นสิ่งจำเป็น เช่น
val s = "本教程"; println(s)
แพคเกจสกาลา
แพคเกจที่กำหนดเอง
Scala ถูกกำหนดโดยใช้แพคเกจแพคเกจคำหลักในรหัส Scala เพื่อกำหนดแพคเกจในสองวิธี
วิธีแรกและ Java เช่นเดียวกับในส่วนหัวของแฟ้มกำหนดชื่อแพคเกจวิธีนี้ทำตามรหัสทั้งหมดจะถูกวางไว้ในหนังสือพิมพ์ ตัวอย่างเช่น:
package com.w3big class HelloWorld
วิธีที่สองคือค่อนข้างคล้ายกับ C # เช่น:
package com.w3big { class HelloWorld }
วิธีที่สองคุณสามารถกำหนดหลายแพคเกจในแฟ้ม
อ้างอิง
Scala ใช้แพคเกจการอ้างอิงคำหลักที่นำเข้า
import java.awt.Color // 引入Color import java.awt._ // 引入包内所有成员 def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent ... // 因为引入了java.awt,所以可以省去前面的部分 }
งบนำเข้าสามารถปรากฏที่ใดก็ได้ไม่เพียง แต่ที่ด้านบนของไฟล์ ผลจากการนำเข้าขยายไปยังจุดสิ้นสุดของบล็อกคำสั่ง นี้อย่างมีนัยสำคัญสามารถลดโอกาสในการเกิดความขัดแย้งชื่อ
หากคุณต้องการที่จะแนะนำแพคเกจของสมาชิกหลายคนที่คุณสามารถใช้ตัวเลือก (ตัวเลือก):
import java.awt.{Color, Font} // 重命名成员 import java.util.{HashMap => JavaHashMap} // 隐藏成员 import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了
หมายเหตุ: โดยค่าเริ่มต้น Scala เสมอแนะนำ java.lang._, scala._ และ Predef._ นี่คุณยังสามารถอธิบายได้ว่าทำไมหัว Scala ของแพ็กเก็ตเมื่อใช้ Scala มีเว้น