翻譯: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

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