พื้นฐานไวยากรณ์สวิฟท์
ในส่วนก่อนหน้านี้เราได้พูดคุยกันแล้วเกี่ยวกับวิธีการสร้างภาษาสวิฟท์ "Hello World!" โปรแกรม ตอนนี้เรามาตรวจสอบต่อไป
ถ้าคุณกำลังสร้างความจำเป็นที่จะแนะนำ OS X สนามเด็กเล่นโกโก้:
import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, World!" print(myString)
ถ้าเราต้องการที่จะสร้างสนามเด็กเล่น iOS ของคุณคุณต้องแนะนำ UIKit:
import UIKit var myString = "Hello, World!" print(myString)
โปรแกรมข้างต้นผลลัพธ์คือ:
Hello, World!
รหัสข้างต้นเป็นโครงสร้างพื้นฐานของโปรแกรมสวิฟท์แล้วเราอธิบายในรายละเอียดส่วนหนึ่งของโครงสร้าง
สวิฟท์แนะนำ
เราสามารถใช้คำสั่งนำเข้าที่จะแนะนำกรอบของ Objective-C (หรือ C ห้องสมุด) ใด ๆ กับโปรแกรมสวิฟท์ยกตัวอย่างเช่นคำสั่งนำเข้าโกโก้นำเข้าห้องสมุดและใช้โกโก้ API ที่เราสามารถใช้พวกเขาในโครงการสวิฟท์
โกโก้ตัวเองจะถูกเขียนในภาษา Objective-C, วัตถุประสงค์ -C เป็น superset ที่เข้มงวดของภาษา C เพื่อให้เราสามารถใช้ในสวิฟท์รหัสภาษาผสมง่าย C หรือแม้กระทั่งรหัส c ++
มาร์คสวิฟท์
โปรแกรมสวิฟท์จากความหลากหลายของราชสกุลเครื่องหมายคำพูดอาจเป็นตัวระบุค่าคงที่สตริงหรือสัญลักษณ์ ตัวอย่างเช่นสวิฟท์, โปรแกรมต่อไปนี้ประกอบด้วยสามราชสกุล:
print("test!") 标记是:单词、符号 print ( "test!" )
หมายเหตุ
ความคิดเห็นที่สวิฟท์กับภาษา C คล้ายกับบรรทัดเดียวความคิดเห็นที่เริ่มต้นด้วยสองทับขวา:
//这是一行注释
ความคิดเห็นหลายสายเริ่มต้นด้วย / * เพื่อ * / End:
/* 这也是一条注释, 但跨越多行 */
ความคิดเห็นหลายสายและภาษา C ที่แตกต่างกันหลายบรรทัดคิดเห็น Swift สามารถซ้อนกันในความคิดเห็นของหลายคู่สายอื่น ๆ ภายใน ถ้อยคำที่ถูกแทรกลงในอีกความเห็นหลายคู่สายในหลายความคิดเห็นบล็อก ความคิดเห็นที่สองบล็อกเมื่อปิดแล้วยังคงอยู่เบื้องหลังบล็อกความคิดเห็นแรก:
/* 这是第一个多行注释的开头 /* 这是嵌套的第二个多行注释 */ 这是第一个多行注释的结尾 */
ความคิดเห็นหลายสายทำรังคือที่คุณสามารถได้อย่างรวดเร็วและง่ายดายในความคิดเห็นบล็อกแม้ว่าการป้องกันรหัสที่มีอยู่แล้วมีความคิดเห็น
อัฒภาค
แตกต่างจากภาษาอื่น ๆ ที่มีสวิฟท์ไม่จำเป็นต้องใช้ของอัฒภาคในตอนท้ายของแต่ละบรรทัดของคำสั่ง (;) แต่คุณจะต้องคั่นด้วยเครื่องหมายอัฒภาคในจำนวนเดียวกันของเส้นสั่งเป็นลายลักษณ์อักษร:
import Cocoa /* 我的第一个 Swift 程序 */ var myString = "Hello, World!"; print(myString)
ตัวบ่งชี้
ตัวบ่งชี้คือการให้ตัวแปรค่าคงที่วิธีการฟังก์ชั่นการนับที่ระบุชื่อของโครงสร้างชั้นเรียนและโปรโตคอลอื่น ๆ ตัวอักษรที่ประกอบตัวระบุเป็นบรรทัดฐานบางอย่างการตั้งชื่อตัวระบุภาษาสวิฟท์ดังต่อไปนี้:
กรณีที่สำคัญ myname กับ myname สองตัวบ่งชี้ที่แตกต่างกัน
ตัวบ่งชี้ตัวอักษรตัวแรกสามารถ (_) หรือตัวอักษรเริ่มต้นด้วยการขีดเส้นใต้ แต่ไม่สามารถเป็นตัวเลข;
ตัวบ่งชี้อาจจะเป็นตัวละครอื่น ๆ ล่าง (_) ตัวอักษรหรือตัวเลข
ตัวอย่างเช่นชื่อผู้ใช้ User_Name, _sys_val สูงและระบุที่ถูกต้องตามกฎหมายอื่น ๆ และ 2mail ห้อง # ผิดกฎหมายและตัวบ่งชี้ระดับ
หมายเหตุ: ตัวอักษรสวิฟท์ใช้การเข้ารหัส Unicode [1]Unicode ที่เรียกว่าระบบการเข้ารหัสแบบครบวงจรซึ่งมีการเข้ารหัสข้อความเอเชียเช่นจีน, ญี่ปุ่น, เกาหลีและตัวละครอื่น ๆ และแม้กระทั่งอีโมติคอนที่เราใช้เครื่องมือการแชท
ถ้าคุณต้องใช้คำหลักที่เป็นตัวบ่งชี้คุณสามารถเพิ่มสำเนียงรอบคำหลัก ( `) ตัวอย่างเช่น:
คำหลัก
คำหลักคือลำดับตัวอักษรที่สงวนไว้คล้ายกับตัวระบุเว้นแต่การใช้สำเนียง ( `) เพื่อใส่หรือไม่สามารถนำมาใช้เป็นตัวบ่งชี้ คำหลักที่มีความสำคัญเป็นพิเศษที่กำหนดไว้ล่วงหน้าสำหรับคอมไพเลอร์ระบุลิขสิทธิ์ คำหลักทั่วไปสี่ต่อไปนี้
และงบคำหลักที่เกี่ยวข้อง
ชั้น | deinit | enum | นามสกุล |
func | นำเข้า | init | ภายใน |
ให้ | ผู้ประกอบการ | ส่วนตัว | โปรโตคอล |
สาธารณะ | คงที่ | struct | ห้อย |
typealias | var |
และงบคำหลักที่เกี่ยวข้อง
หยุด | กรณี | ต่อ | ผิดนัด |
ทำ | อื่น | fallthrough | สำหรับ |
ถ้า | ใน | กลับ | สวิตซ์ |
ที่ไหน | ในขณะที่ |
การแสดงออกและการพิมพ์คำ
ในขณะที่ | dynamicType | เท็จ | เป็น |
ศูนย์ | ตนเอง | ตนเอง | ซุปเปอร์ |
จริง | _COLUMN_ | _FILE_ | _FUNCTION_ |
_LINE_ |
คำหลักที่ใช้ในบริบทโดยเฉพาะอย่างยิ่ง
การเชื่อมโยง | ความสะดวกสบาย | พลวัต | didSet |
สุดท้าย | ได้รับ | มัด | InOut |
สันหลังยาว | ซ้าย | กรรมวิธี | ไม่มีเลย |
nonmutating | ไม่จำเป็น | เอาชนะ | postfix |
ฐานันดร | อุปสรรค | โปรโตคอล | จำเป็นต้องใช้ |
ขวา | ชุด | ชนิด | ที่ไม่มีเจ้าของ |
อ่อนแอ | willSet |
พื้นที่สวิฟท์
สวิฟท์ไม่ใช่ภาษาเช่น C / C ++, Java เป็นพื้นที่สมบูรณ์ละเว้นการใช้สวิฟท์ของพื้นที่มีความต้องการบางอย่าง แต่ไม่เหมือนงูใหญ่เยื้องข้อกำหนดที่เข้มงวดน้อย
ในสวิฟท์, ผู้ประกอบการไม่สามารถปฏิบัติตามได้ทันทีที่ตัวแปรหรือคงที่ ตัวอย่างเช่นรหัสต่อไปนี้จะได้รับ:
let a= 1 + 2
ข้อผิดพลาดคือ:
error: prefix/postfix '=' is reserved
อาจหมายโดยตรงกับเครื่องหมายเท่ากับในด้านหน้าหรือด้านหลังใช้งานนี้สงวนไว้
รหัสต่อไปนี้จะถูกกำหนด (ทราบพื้นที่อย่างต่อเนื่อง):
let a = 1+ 2
ข้อผิดพลาดคือ:
error: consecutive statements on a line must be separated by ';'
เพราะนี่คือสวิฟท์ 1+ ที่จะเชื่อคำพูดนี้ถูกกว่า 2 เป็นคำสั่งต่อไป
เฉพาะในวิธีนี้จะไม่เขียนข้อผิดพลาด:
let a = 1 + 2; // 编码规范推荐使用这种写法 let b = 3+4 // 这样也是OK的
สวิฟท์ตัวอักษร
ที่เรียกว่าอักษรหมายถึงจำนวนสตริงหรือค่าบูลีนที่เฉพาะเจาะจงนี้สามารถชี้ตรงกับชนิดของตัวเองในท้องถิ่นและความคุ้มค่าสำหรับการกำหนดตัวแปร ยกตัวอย่างเช่นในต่อไปนี้:
42 // 整型字面量 3.14159 // 浮点型字面量 "Hello, world!" // 字符串型字面量 true // 布尔型字面量