翻譯:stanzhai 校對:xielingwang

語法總結


本頁包含內容:

語句

語句語法
語句表達式 ; 可選
語句宣告 ; 可選
語句迴圈語句 ; 可選
語句分支語句 ; 可選
語句標記語句(Labeled Statement)
語句控制轉移語句 ; 可選
多條語句(Statements)語句 多條語句(Statements) 可選

迴圈語句語法
迴圈語句for語句
迴圈語句for-in語句
迴圈語句while語句
迴圈語句do-while語句

For 迴圈語法
for語句for for初始條件 可選 ; 表達式 可選 ; 表達式 可選 程式碼區塊
for語句for ( for初始條件 可選 ; 表達式 可選 ; 表達式 可選 ) 程式碼區塊
for初始條件變數宣告 | 表達式列表

For-In 迴圈語法
for-in語句for 模式 in 表達式 程式碼區塊

While 迴圈語法
while語句while while條件 程式碼區塊
while條件表達式 | 宣告

Do-While 迴圈語法
do-while語句do 程式碼區塊 while while條件

分支語句語法
分支語句if語句
分支語句switch語句

If語句語法
if語句if if條件 程式碼區塊 else子句(Clause) 可選
if條件表達式 | 宣告
else子句(Clause)else 程式碼區塊 | else if語句

Switch語句語法
switch語句switch 表達式 { SwitchCase列表 可選 }
SwitchCase列表SwitchCase SwitchCase列表 可選
SwitchCasecase標簽 多條語句(Statements) | default標簽 多條語句(Statements)
SwitchCasecase標簽 ; | default標簽 ;
case標簽case case項列表 :
case項列表模式 guard-clause 可選 | 模式 guard-clause 可選 , case項列表
default標簽default :
guard-clausewhere guard-expression
guard-expression表達式

標記語句語法
標記語句(Labeled Statement)語句標簽 迴圈語句 | 語句標簽 switch語句
語句標簽標簽名稱 :
標簽名稱識別符號

控制傳遞語句(Control Transfer Statement) 語法
控制傳遞語句break語句
控制傳遞語句continue語句
控制傳遞語句fallthrough語句
控制傳遞語句return語句

Break 語句語法
break語句break 標簽名稱 可選

Continue 語句語法
continue語句continue 標簽名稱 可選

Fallthrough 語句語法
fallthrough語句fallthrough

Return 語句語法
return語句return 表達式 可選

泛型參數

泛型形參子句(Generic Parameter Clause) 語法
泛型參數子句< 泛型參數列表 約束子句 可選 >
泛型參數列表泛形參數 | 泛形參數 , 泛型參數列表
泛形參數型別名稱
泛形參數型別名稱 : 型別標識
泛形參數型別名稱 : 協定合成型別
約束子句where 約束列表
約束列表約束 | 約束 , 約束列表
約束一致性約束 | 同型別約束
一致性約束型別標識 : 型別標識
一致性約束型別標識 : 協定合成型別
同型別約束型別標識 == 型別標識

泛型實參子句語法
(泛型參數子句Generic Argument Clause)< 泛型參數列表 >
泛型參數列表泛型參數 | 泛型參數 , 泛型參數列表
泛型參數型別

宣告 (Declarations)

宣告語法
宣告導入宣告
宣告常數宣告
宣告變數宣告
宣告型別別名宣告
宣告函式宣告
宣告列舉宣告
宣告結構宣告
宣告類別宣告
宣告協定宣告
宣告建構器宣告
宣告析構器宣告
宣告擴展宣告
宣告下標腳本宣告
宣告運算子宣告
宣告(Declarations)列表宣告 宣告(Declarations)列表 可選
宣告描述符(Specifiers)列表宣告描述符(Specifier) 宣告描述符(Specifiers)列表 可選
宣告描述符(Specifier)class | mutating | nonmutating | override | static | unowned | unowned(safe) | unowned(unsafe) | weak

頂級(Top Level) 宣告語法
頂級宣告多條語句(Statements) 可選

程式碼區塊語法
程式碼區塊{ 多條語句(Statements) 可選 }

導入(Import)宣告語法
導入宣告特性(Attributes)列表 可選 import 導入型別 可選 導入路徑
導入型別typealias | struct | class | enum | protocol | var | func
導入路徑導入路徑識別符號 | 導入路徑識別符號 . 導入路徑
導入路徑識別符號識別符號 | 運算子

常數宣告語法
常數宣告特性(Attributes)列表 可選 宣告描述符(Specifiers)列表 可選 let 模式建構器列表
模式建構器列表模式建構器 | 模式建構器 , 模式建構器列表
模式建構器模式 建構器 可選
建構器= 表達式

變數宣告語法
變數宣告變數宣告頭(Head) 模式建構器列表
變數宣告變數宣告頭(Head) 變數名 型別注解 程式碼區塊
變數宣告變數宣告頭(Head) 變數名 型別注解 getter-setter塊
變數宣告變數宣告頭(Head) 變數名 型別注解 getter-setter關鍵字(Keyword)塊
變數宣告變數宣告頭(Head) 變數名 型別注解 建構器 可選 willSet-didSet程式碼區塊
變數宣告頭(Head)特性(Attributes)列表 可選 宣告描述符(Specifiers)列表 可選 var
變數名稱識別符號
getter-setter塊{ getter子句 setter子句 可選 }
getter-setter塊{ setter子句 getter子句 }
getter子句特性(Attributes)列表 可選 get 程式碼區塊
setter子句特性(Attributes)列表 可選 set setter名稱 可選 程式碼區塊
setter名稱( 識別符號 )
getter-setter關鍵字(Keyword)塊{ getter關鍵字(Keyword)子句 setter關鍵字(Keyword)子句 可選 }
getter-setter關鍵字(Keyword)塊{ setter關鍵字(Keyword)子句 getter關鍵字(Keyword)子句 }
getter關鍵字(Keyword)子句特性(Attributes)列表 可選 get
setter關鍵字(Keyword)子句特性(Attributes)列表 可選 set
willSet-didSet程式碼區塊{ willSet子句 didSet子句 可選 }
willSet-didSet程式碼區塊{ didSet子句 willSet子句 }
willSet子句特性(Attributes)列表 可選 willSet setter名稱 可選 程式碼區塊
didSet子句特性(Attributes)列表 可選 didSet setter名稱 可選 程式碼區塊

型別別名宣告語法
型別別名宣告型別別名頭(Head) 型別別名賦值
型別別名頭(Head)typealias 型別別名名稱
型別別名名稱識別符號
型別別名賦值= 型別

函式宣告語法
函式宣告函式頭 函式名 泛型參數子句 可選 函式簽名(Signature) 函式體
函式頭特性(Attributes)列表 可選 宣告描述符(Specifiers)列表 可選 func
函式名識別符號 | 運算子
函式簽名(Signature)parameter-clauses 函式結果 可選
函式結果-> 特性(Attributes)列表 可選 型別
函式體程式碼區塊
parameter-clauses參數子句 parameter-clauses 可選
參數子句( ) | ( 參數列表 ... 可選 )
參數列表參數 | 參數 , 參數列表
參數inout 可選 let 可選 # 可選 參數名 本地參數名 可選 型別注解 預設參數子句 可選
參數inout 可選 var # 可選 參數名 本地參數名 可選 型別注解 預設參數子句 可選
參數特性(Attributes)列表 可選 型別
參數名識別符號 | _
本地參數名識別符號 | _
預設參數子句= 表達式

列舉宣告語法
列舉宣告特性(Attributes)列表 可選 聯合式列舉 | 特性(Attributes)列表 可選 原始值式列舉
聯合式列舉列舉名 泛型參數子句 可選 { union-style-enum-members 可選 }
union-style-enum-membersunion-style-enum-member union-style-enum-members 可選
union-style-enum-member宣告 | 聯合式(Union Style)的列舉case子句
聯合式(Union Style)的列舉case子句特性(Attributes)列表 可選 case 聯合式(Union Style)的列舉case列表
聯合式(Union Style)的列舉case列表聯合式(Union Style)的case | 聯合式(Union Style)的case , 聯合式(Union Style)的列舉case列表
聯合式(Union Style)的case列舉的case名 元組型別 可選
列舉名識別符號
列舉的case名識別符號
原始值式列舉列舉名 泛型參數子句 可選 : 型別標識 { 原始值式列舉成員列表 可選 }
原始值式列舉成員列表原始值式列舉成員 原始值式列舉成員列表 可選
原始值式列舉成員宣告 | 原始值式列舉case子句
原始值式列舉case子句特性(Attributes)列表 可選 case 原始值式列舉case列表
原始值式列舉case列表原始值式列舉case | 原始值式列舉case , 原始值式列舉case列表
原始值式列舉case列舉的case名 原始值賦值 可選
原始值賦值= 字面量

結構宣告語法
結構宣告特性(Attributes)列表 可選 struct 結構名稱 泛型參數子句 可選 型別繼承子句 可選 結構主體
結構名稱識別符號
結構主體{ 宣告(Declarations)列表 可選 }

類別宣告語法
類別宣告特性(Attributes)列表 可選 class 類別名 泛型參數子句 可選 型別繼承子句 可選 類別主體
類別名識別符號
類別主體{ 宣告(Declarations)列表 可選 }

協定(Protocol)宣告語法
協定宣告特性(Attributes)列表 可選 protocol 協定名 型別繼承子句 可選 協定主體
協定名識別符號
協定主體{ 協定成員宣告(Declarations)列表 可選 }
協定成員宣告協定屬性宣告
協定成員宣告協定方法宣告
協定成員宣告協定建構器宣告
協定成員宣告協定下標腳本宣告
協定成員宣告協定關聯型別宣告
協定成員宣告(Declarations)列表協定成員宣告 協定成員宣告(Declarations)列表 可選

協定屬性宣告語法
協定屬性宣告變數宣告頭(Head) 變數名 型別注解 getter-setter關鍵字(Keyword)塊

協定方法宣告語法
協定方法宣告函式頭 函式名 泛型參數子句 可選 函式簽名(Signature)

協定建構器宣告語法
協定建構器宣告建構器頭(Head) 泛型參數子句 可選 參數子句

協定下標腳本宣告語法
協定下標腳本宣告下標腳本頭(Head) 下標腳本結果(Result) getter-setter關鍵字(Keyword)塊

協定關聯型別宣告語法
協定關聯型別宣告型別別名頭(Head) 型別繼承子句 可選 型別別名賦值 可選

建構器宣告語法
建構器宣告建構器頭(Head) 泛型參數子句 可選 參數子句 建構器主體
建構器頭(Head)特性(Attributes)列表 可選 convenience 可選 init
建構器主體程式碼區塊

析構器宣告語法
析構器宣告特性(Attributes)列表 可選 deinit 程式碼區塊

擴展(Extension)宣告語法
擴展宣告extension 型別標識 型別繼承子句 可選 extension-body
extension-body{ 宣告(Declarations)列表 可選 }

下標腳本宣告語法
下標腳本宣告下標腳本頭(Head) 下標腳本結果(Result) 程式碼區塊
下標腳本宣告下標腳本頭(Head) 下標腳本結果(Result) getter-setter塊
下標腳本宣告下標腳本頭(Head) 下標腳本結果(Result) getter-setter關鍵字(Keyword)塊
下標腳本頭(Head)特性(Attributes)列表 可選 subscript 參數子句
下標腳本結果(Result)-> 特性(Attributes)列表 可選 型別

運算子宣告語法
運算子宣告前綴運算子宣告 | 後綴運算子宣告 | 中綴運算子宣告
前綴運算子宣告運算子 prefix 運算子 { }
後綴運算子宣告運算子 postfix 運算子 { }
中綴運算子宣告運算子 infix 運算子 { 中綴運算子屬性 可選 }
中綴運算子屬性優先級子句 可選 結和性子句 可選
優先級子句precedence 優先級水平
優先級水平 → 數值 0 到 255
結和性子句associativity 結和性
結和性left | right | none

模式

模式(Patterns) 語法
模式通配符模式 型別注解 可選
模式識別符號模式 型別注解on) 可選
模式值綁定模式
模式元組模式 型別注解 可選
模式enum-case-pattern
模式type-casting-pattern
模式表達式模式

通配符模式語法
通配符模式_

識別符號模式語法
識別符號模式識別符號

值綁定(Value Binding)模式語法
值綁定模式var 模式 | let 模式

元組模式語法
元組模式( 元組模式元素列表 可選 )
元組模式元素列表元組模式元素 | 元組模式元素 , 元組模式元素列表
元組模式元素模式

列舉用例模式語法
enum-case-pattern型別標識 可選 . 列舉的case名 元組模式 可選

型別轉換模式語法
type-casting-patternis模式 | as模式
is模式is 型別
as模式模式 as 型別

表達式模式語法
表達式模式表達式

特性

特性語法
特色@ 特性名 特性參數子句 可選
特性名識別符號
特性參數子句( 平衡語彙單元列表 可選 )
特性(Attributes)列表特色 特性(Attributes)列表 可選
平衡語彙單元列表平衡語彙單元 平衡語彙單元列表 可選
平衡語彙單元( 平衡語彙單元列表 可選 )
平衡語彙單元[ 平衡語彙單元列表 可選 ]
平衡語彙單元{ 平衡語彙單元列表 可選 }
平衡語彙單元任意識別符號, 關鍵字, 字面量或運算子
平衡語彙單元任意標點除了(, ), [, ], {, 或 }

表達式

表達式語法
表達式前綴表達式 二元表達式列表 可選
表達式列表表達式 | 表達式 , 表達式列表

前綴表達式語法
前綴表達式前綴運算子 可選 後綴表達式
前綴表達式寫入寫出(in-out)表達式
寫入寫出(in-out)表達式& 識別符號

二元表達式語法
二元表達式二元運算子 前綴表達式
二元表達式賦值運算子 前綴表達式
二元表達式條件運算子 前綴表達式
二元表達式型別轉換運算子
二元表達式列表二元表達式 二元表達式列表 可選

賦值運算子語法
賦值運算子=

三元條件運算子語法
三元條件運算子? 表達式 :

型別轉換運算子語法
型別轉換運算子is 型別 | as ? 可選 型別

主表達式語法
主表達式識別符號 泛型參數子句 可選
主表達式字面量表達式
主表達式self表達式
主表達式超類別表達式
主表達式閉包表達式
主表達式圓括號表達式
主表達式隱式成員表達式
主表達式通配符表達式

字面量表達式語法
字面量表達式字面量
字面量表達式陣列字面量 | 字典字面量
字面量表達式__FILE__ | __LINE__ | __COLUMN__ | __FUNCTION__
陣列字面量[ 陣列字面量項列表 可選 ]
陣列字面量項列表陣列字面量項 , 可選 | 陣列字面量項 , 陣列字面量項列表
陣列字面量項表達式
字典字面量[ 字典字面量項列表 ] | [ : ]
字典字面量項列表字典字面量項 , 可選 | 字典字面量項 , 字典字面量項列表
字典字面量項表達式 : 表達式

Self 表達式語法
self表達式self
self表達式self . 識別符號
self表達式self [ 表達式 ]
self表達式self . init

超類別表達式語法
超類別表達式超類別方法表達式 | 超類別下標表達式 | 超類別建構器表達式
超類別方法表達式super . 識別符號
超類別下標表達式super [ 表達式 ]
超類別建構器表達式super . init

閉包表達式語法
閉包表達式{ 閉包簽名(Signational) 可選 多條語句(Statements) }
閉包簽名(Signational)參數子句 函式結果 可選 in
閉包簽名(Signational)識別符號列表 函式結果 可選 in
閉包簽名(Signational)捕獲(Capature)列表 參數子句 函式結果 可選 in
閉包簽名(Signational)捕獲(Capature)列表 識別符號列表 函式結果 可選 in
閉包簽名(Signational)捕獲(Capature)列表 in
捕獲(Capature)列表[ 捕獲(Capature)說明符 表達式 ]
捕獲(Capature)說明符weak | unowned | unowned(safe) | unowned(unsafe)

隱式成員表達式語法
隱式成員表達式. 識別符號

圓括號表達式(Parenthesized Expression)語法
圓括號表達式( 表達式元素列表 可選 )
表達式元素列表表達式元素 | 表達式元素 , 表達式元素列表
表達式元素表達式 | 識別符號 : 表達式

通配符表達式語法
通配符表達式_

後綴表達式語法
後綴表達式主表達式
後綴表達式後綴表達式 後綴運算子
後綴表達式函式呼叫表達式
後綴表達式建構器表達式
後綴表達式顯示成員表達式
後綴表達式後綴self表達式
後綴表達式動態型別表達式
後綴表達式下標表達式
後綴表達式強制取值(Forced Value)表達式
後綴表達式可選鏈(Optional Chaining)表達式

函式呼叫表達式語法
函式呼叫表達式後綴表達式 圓括號表達式
函式呼叫表達式後綴表達式 圓括號表達式 可選 後綴閉包(Trailing Closure)
後綴閉包(Trailing Closure)閉包表達式

建構器表達式語法
建構器表達式後綴表達式 . init

顯式成員表達式語法
顯示成員表達式後綴表達式 . 十進制數字
顯示成員表達式後綴表達式 . 識別符號 泛型參數子句 可選

後綴Self 表達式語法
後綴self表達式後綴表達式 . self

動態型別表達式語法
動態型別表達式後綴表達式 . dynamicType

附屬腳本表達式語法
附屬腳本表達式後綴表達式 [ 表達式列表 ]

強制取值(Forced Value)語法
強制取值(Forced Value)表達式後綴表達式 !

可選鏈表達式語法
可選鏈表達式後綴表達式 ?

詞法結構

識別符號語法
識別符號識別符號頭(Head) 識別符號字元列表 可選
識別符號` 識別符號頭(Head) 識別符號字元列表 可選 `
識別符號隱式參數名
識別符號列表識別符號 | 識別符號 , 識別符號列表
識別符號頭(Head) → Upper- or lowercase letter A through Z
識別符號頭(Head) → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA
識別符號頭(Head) → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF
識別符號頭(Head) → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF
識別符號頭(Head) → U+1E00–U+1FFF
識別符號頭(Head) → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F
識別符號頭(Head) → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793
識別符號頭(Head) → U+2C00–U+2DFF or U+2E80–U+2FFF
識別符號頭(Head) → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF
識別符號頭(Head) → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44
識別符號頭(Head) → U+FE47–U+FFFD
識別符號頭(Head) → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD
識別符號頭(Head) → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD
識別符號頭(Head) → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD
識別符號頭(Head) → U+D0000–U+DFFFD or U+E0000–U+EFFFD
識別符號字元 → 數值 0 到 9
識別符號字元 → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F
識別符號字元識別符號頭(Head)
識別符號字元列表識別符號字元 識別符號字元列表 可選
隱式參數名$ 十進制數字列表

字面量語法
字面量整型字面量 | 浮點數字面量 | 字串字面量

整型字面量語法
整型字面量二進制字面量
整型字面量八進制字面量
整型字面量十進制字面量
整型字面量十六進制字面量
二進制字面量0b 二進制數字 二進制字面量字元列表 可選
二進制數字 → 數值 0 到 1
二進制字面量字元二進制數字 | _
二進制字面量字元列表二進制字面量字元 二進制字面量字元列表 可選
八進制字面量0o 八進字數字 八進制字元列表 可選
八進字數字 → 數值 0 到 7
八進制字元八進字數字 | _
八進制字元列表八進制字元 八進制字元列表 可選
十進制字面量十進制數字 十進制字元列表 可選
十進制數字 → 數值 0 到 9
十進制數字列表十進制數字 十進制數字列表 可選
十進制字元十進制數字 | _
十進制字元列表十進制字元 十進制字元列表 可選
十六進制字面量0x 十六進制數字 十六進制字面量字元列表 可選
十六進制數字 → 數值 0 到 9, a through f, or A through F
十六進制字元十六進制數字 | _
十六進制字面量字元列表十六進制字元 十六進制字面量字元列表 可選

浮點型字面量語法
浮點數字面量十進制字面量 十進制分數 可選 十進制指數 可選
浮點數字面量十六進制字面量 十六進制分數 可選 十六進制指數
十進制分數. 十進制字面量
十進制指數浮點數e 正負號 可選 十進制字面量
十六進制分數. 十六進制字面量 可選
十六進制指數浮點數p 正負號 可選 十六進制字面量
浮點數ee | E
浮點數pp | P
正負號+ | -

字元型字面量語法
字串字面量" 參考文字 "
參考文字參考文字條目 參考文字 可選
參考文字條目跳脫字元
參考文字條目( 表達式 )
參考文字條目 → 除了"­, \­, U+000A, or U+000D的所有Unicode的字元
跳脫字元\0 | \ | \t | \n | \r | \" | \'
跳脫字元\x 十六進制數字 十六進制數字
跳脫字元\u 十六進制數字 十六進制數字 十六進制數字 十六進制數字
跳脫字元\U 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字

運算子語法語法
運算子運算子字元 運算子 可選
運算子字元/ | = | - | + | ! | * | % | < | > | & | | | ^ | ~ | .
二元運算子運算子
前綴運算子運算子
後綴運算子運算子

型別

型別語法
型別陣列型別 | 函式型別 | 型別標識 | 元組型別 | 可選型別 | 隱式解析可選型別 | 協定合成型別 | 元型型別

型別注解語法
型別注解: 特性(Attributes)列表 可選 型別

型別標識語法
型別標識型別名稱 泛型參數子句 可選 | 型別名稱 泛型參數子句 可選 . 型別標識
類別名識別符號

元組型別語法
元組型別( 元組型別主體 可選 )
元組型別主體元組型別的元素列表 ... 可選
元組型別的元素列表元組型別的元素 | 元組型別的元素 , 元組型別的元素列表
元組型別的元素特性(Attributes)列表 可選 inout 可選 型別 | inout 可選 元素名 型別注解
元素名識別符號

函式型別語法
函式型別型別 -> 型別

陣列型別語法
陣列型別型別 [ ] | 陣列型別 [ ]

可選型別語法
可選型別型別 ?

隱式解析可選型別(Implicitly Unwrapped Optional Type)語法
隱式解析可選型別型別 !

協定合成型別語法
協定合成型別protocol < 協定識別符號列表 可選 >
協定識別符號列表協定識別符號 | 協定識別符號 , 協定識別符號列表
協定識別符號型別標識

元(Metatype)型別語法
元型別型別 . Type | 型別 . Protocol

型別繼承子句語法
型別繼承子句: 型別繼承列表
型別繼承列表型別標識 | 型別標識 , 型別繼承列表