语法总结

语法总结

完整语法一览。

词法结构

空白符语法:

空白符 → 空白符项 空白符可选 \ 空白符项 → 换行符 \ 空白符项 → 行内空格 \ 空白符项 → 注释 \ 空白符项 → 多行注释 \ 空白符项 → U+0000, U+000B, 或 U+000C

换行符 → U+000A \ 换行符 → U+000D \ 换行符 → U+000D 后接 U+000A

行内空格 → 行内空格符 行内空格可选 \ 行内空格符 → U+0009 或 U+0020

注释 → <code>//</code> 注释文本 换行符 \ 多行注释 → *<code>/* 多行注释文本 <code>/**

注释文本 → 注释文本项 注释文本可选 \ 注释文本项 → 除 U+000A 或 U+000D 外的任意 Unicode 标量值

多行注释文本 → 多行注释文本项 多行注释文本可选 \ 多行注释文本项 → 多行注释 \ 多行注释文本项 → 注释文本项 \ 多行注释文本项 → 除 *<code>/ 或 /</code>* 外的任意 Unicode 标量值

标识符语法:

标识符 → 标识符头(Head) 标识符字符集可选 \ 标识符 → `<code> </code> `<code> 标识符头(Head) 标识符字符集可选 </code><code> </code> `<code> \ 标识符 → 隐式参数名 \ 标识符 → 属性包装器呈现值 \ 标识符集 → 标识符 | 标识符 </code>,` 标识符集

标识符头(Head) → A 到 Z 的大写或小写字母 \ 标识符头(Head) → <code>_</code> \ 标识符头(Head) → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, 或 U+00B7–U+00BA \ 标识符头(Head) → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, 或 U+00F8–U+00FF \ 标识符头(Head) → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, 或 U+180F–U+1DBF \ 标识符头(Head) → U+1E00–U+1FFF \ 标识符头(Head) → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, 或 U+2060–U+206F \ 标识符头(Head) → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, 或 U+2776–U+2793 \ 标识符头(Head) → U+2C00–U+2DFF 或 U+2E80–U+2FFF \ 标识符头(Head) → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, 或 U+3040–U+D7FF \ 标识符头(Head) → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, 或 U+FE30–U+FE44 \ 标识符头(Head) → U+FE47–U+FFFD \ 标识符头(Head) → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, 或 U+40000–U+4FFFD \ 标识符头(Head) → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, 或 U+80000–U+8FFFD \ 标识符头(Head) → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, 或 U+C0000–U+CFFFD \ 标识符头(Head) → U+D0000–U+DFFFD 或 U+E0000–U+EFFFD

标识符字符 → 数字 0 到 9 \ 标识符字符 → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, 或 U+FE20–U+FE2F \ 标识符字符 → 标识符头(Head) \ 标识符字符集 → 标识符字符项 标识符字符集可选

隐式参数名 → <code>$</code> 十进制数字 \ 属性包装器呈现值 → <code>$</code> 标识符字符集

字面量语法:

字面量 → 数字字面量 | 字符串字面量 | 正则表达式字面量 | 布尔字面量 | 空字面量

数字字面量 → <code>-</code> 可选 整型字面量 | <code>-</code> 可选 浮点型字面量 \ 布尔字面量 → <code>true</code> | <code>false</code> \ 空字面量 → <code>nil</code>

整型字面量语法:

整型字面量 → 二进制字面量 \ 整型字面量 → 八进制字面量 \ 整型字面量 → 十进制字面量 \ 整型字面量 → 十六进制字面量

二进制字面量 → <code>0b</code> 二进制数字 二进制字面量字符 可选 \ 二进制数字 → 数字 0 或 1 \ 二进制字面量字符 → 二进制数字 | <code>_</code> \ 二进制字面量字符 → 二进制字面量字符 二进制字面量字符 可选

八进制字面量 → <code>0o</code> 八进制数字 八进制字面量字符 可选 \ 八进制数字 → 数字 0 到 7 \ 八进制字面量字符 → 八进制数字 | <code>_</code> \ 八进制字面量字符 → 八进制字面量字符 八进制字面量字符 可选

十进制字面量 → 十进制数字 十进制字面量字符 可选 \ 十进制数字 → 数字 0 到 9 \ 十进制数字 → 十进制数字 十进制数字 可选 \ 十进制字面量字符 → 十进制数字 | <code>_</code> \ 十进制字面量字符 → 十进制字面量字符 十进制字面量字符 可选

十六进制字面量 → <code>0x</code> 十六进制数字 十六进制字面量字符 可选 \ 十六进制数字 → 数字 0 到 9,a 到 f,或 A 到 F \ 十六进制字面量字符 → 十六进制数字 | <code>_</code> \ 十六进制字面量字符 → 十六进制字面量字符 十六进制字面量字符 可选

浮点型字面量语法:

浮点型字面量 → 十进制字面量 十进制分数 可选 十进制指数 可选 \ 浮点型字面量 → 十六进制字面量 十六进制分数 可选 十六进制指数

十进制分数 → <code>.</code> 十进制字面量 \ 十进制指数 → 浮点数 e 正负号 可选 十进制字面量

十六进制分数 → <code>.</code> 十六进制数字 十六进制字面量字符 可选 \ 十六进制指数 → 浮点数 p 正负号 可选 十进制字面量

浮点数 e → <code>e</code> | <code>E</code> \ 浮点数 p → <code>p</code> | <code>P</code> \ 正负号 → <code>+</code> | <code>-</code>

字符串字面量语法:

字符串字面量 → 静态字符串字面量 | 插值字符串字面量

字符串开分隔定界符 → 字符串扩展分隔符 可选 <code>&quot;</code> \ 字符串闭分隔定界符 → <code>&quot;</code> 字符串扩展分隔符 可选

静态字符串字面量 → 字符串开分隔定界符 引用文本 可选 字符串闭分隔定界符 \ 静态字符串字面量 → 多行字符串开分隔定界符 多行引用文本 可选 多行字符串闭分隔定界符

多行字符串开分隔定界符 → 字符串扩展分隔符 可选 <code>&quot;&quot;&quot;</code> \ 多行字符串闭分隔定界符 → <code>&quot;&quot;&quot;</code> 字符串扩展分隔符 可选 \ 字符串扩展分隔符 → <code>#</code> 字符串扩展分隔符 可选

引用文本 → 引用文本项 引用文本 可选 \ 引用文本项 → 转义字符 \ 引用文本项 → 任何 Unicode 标量值,除了 <code>&quot;</code>、`&grave;、U+000A 或 U+000D

多行引用文本 → 多行引用文本项 多行引用文本 可选 \ 多行引用文本项 → 转义字符 \ 多行引用文本项 → 任何 Unicode 标量值,除了 `&grave; \ 多行引用文本项 → 转义换行符

插值字符串字面量 → 字符串开分隔定界符 插值文本 可选 字符串闭分隔定界符 \ 插值字符串字面量 → 多行字符串开分隔定界符 多行插值文本 可选 多行字符串闭分隔定界符

插值文本 → 插值文本项 插值文本 可选 \ 插值文本项 → <code>\(</code> 表达式 <code>)</code> | 引用文本项

多行插值文本 → 多行插值文本项 多行插值文本 可选 \ 多行插值文本项 → <code>\(</code> 表达式 <code>)</code> | 多行引用文本项

转义序列 → <code>&amp;grave; 字符串扩展分隔符 \ 转义字符 → 转义序列 </code>0<code> | 转义序列 </code>&grave; | 转义序列 <code>t</code> | 转义序列 <code>n</code> | 转义序列 <code>r</code> | 转义序列 <code>&quot;</code> | 转义序列 <code>&apos;</code> \ 转义字符 → 转义序列 <code>u</code> <code>{</code> unicode-标量-数字 <code>}</code> \ unicode-标量-数字 → 一到八位十六进制数字

转义换行符 → 转义序列 内联空格 可选 换行符

正则表达式字面量语法:

正则表达式字面量 → 正则表达式字面量开分隔定界符 正则表达式 正则表达式字面量闭分隔定界符 \ 正则表达式 → 任何正则表达式

正则表达式字面量开分隔定界符 → 正则表达式扩展分隔符 可选 <code>/</code> \ 正则表达式字面量闭分隔定界符 → <code>/</code> 正则表达式扩展分隔符 可选

正则表达式扩展分隔符 → <code>#</code> 正则表达式扩展分隔符 可选

运算符语法:

运算符 → 运算符头 运算符字符集 可选 \ 运算符 → 点运算符头 点运算符字符集

运算符头 → <code>/</code> | <code>=</code> | <code>-</code> | <code>+</code> | <code>!</code> | *<code> | % | < | > | & | | | ^ | ~ | ?* \ 运算符头 → U+00A1–U+00A7 \ 运算符头 → U+00A9 或 U+00AB \ 运算符头 → U+00AC 或 U+00AE \ 运算符头 → U+00B0–U+00B1 \ 运算符头 → U+00B6、U+00BB、U+00BF、U+00D7 或 U+00F7 \ 运算符头 → U+2016–U+2017 \ 运算符头 → U+2020–U+2027 \ 运算符头 → U+2030–U+203E \ 运算符头 → U+2041–U+2053 \ 运算符头 → U+2055–U+205E \ 运算符头 → U+2190–U+23FF \ 运算符头 → U+2500–U+2775 \ 运算符头 → U+2794–U+2BFF \ 运算符头 → U+2E00–U+2E7F \ 运算符头 → U+3001–U+3003 \ 运算符头 → U+3008–U+3020 \ 运算符头* → U+3030

运算符字符 → 运算符头 \ 运算符字符 → U+0300–U+036F \ 运算符字符 → U+1DC0–U+1DFF \ 运算符字符 → U+20D0–U+20FF \ 运算符字符 → U+FE00–U+FE0F \ 运算符字符 → U+FE20–U+FE2F \ 运算符字符 → U+E0100–U+E01EF \ 运算符字符集 → 运算符字符 运算符字符集 可选

点运算符头 → <code>.</code> \ 点运算符字符 → <code>.</code> | 运算符字符 \ 点运算符字符集 → 点运算符字符 点运算符字符集 可选

中缀运算符 → 运算符 \ 前缀运算符 → 运算符 \ 后缀运算符 → 运算符

类型

类型语法:

类型 → 函数类型 \ 类型 → 数组类型 \ 类型 → 字典类型 \ 类型 → 类型标识符 \ 类型 → 元组类型 \ 类型 → 可选类型 \ 类型 → 隐式解析可选类型 \ 类型 → 协议合成类型 \ 类型 → 不透明类型 \ 类型 → 元类型 \ 类型 → 任意类型 \ 类型 → 自身类型 \ 类型 → <code>(</code> type <code>)</code>

类型注释语法:

类型注释 → <code>:</code> 属性(Attributes) 可选 <code>inout</code> 可选 类型

类型标识符语法:

类型标识符 → 类型名 泛型实参子句 可选 | 类型名 泛型实参子句 可选 <code>.</code> 类型标识符 \ 类型名 → 标识符

元组类型语法:

元组类型 → <code>(</code> <code>)</code> | <code>(</code> 元组类型元素 <code>,</code> 元组类型元素集 <code>)</code> \ 元组类型元素集 → 元组类型元素 | 元组类型元素 <code>,</code> 元组类型元素集 \ 元组类型元素 → 元素名 类型注释 | 类型 \ 元素名 → 标识符

函数类型语法:

函数类型 → 属性 可选 函数类型子句 <code>async</code> 可选 throws 可选 <code>-&gt;</code> 类型

函数类型子句 → <code>(</code> <code>)</code> \ 函数类型子句 → <code>(</code> 函数类型参数集 <code>...</code> 可选 <code>)</code>

函数类型参数集 → 函数类型参数 | 函数类型参数 <code>,</code> 函数类型参数集 \ 函数类型参数 → 属性 可选 <code>inout</code> 可选 类型 | 参数标签 类型注释 \ 参数标签 → 标识符

throws 子句 → <code>throws</code> | <code>throws</code> <code>(</code> 类型 <code>)</code>

数组类型语法:

数组类型 → <code>[</code> 类型 <code>]</code>

字典类型语法:

字典类型 → <code>[</code> 类型 <code>:</code> 类型 <code>]</code>

可选类型语法:

可选类型 → 类型 <code>?</code>

隐式解析可选类型语法:

隐式解析可选类型 → 类型 <code>!</code>

协议合成类型语法:

协议合成类型 → 类型标识符 <code>&amp;</code> 协议合成延续 \ 协议合成延续 → 类型标识符 | 协议合成类型

不透明类型语法:

不透明类型 → <code>some</code> 类型

被包装的协议类型语法:

被包装的协议类型 → <code>any</code> 类型

元类型语法:

元类型 → 类型 <code>.</code> <code>Type</code> | 类型 <code>.</code> <code>Protocol</code>

任意类型语法:

任意类型 → <code>Any</code>

自身类型语法:

自身类型 → <code>Self</code>

类型继承子句语法:

类型继承子句 → <code>:</code> 类型继承集 \ 类型继承集 → 属性 可选 类型标识符 | 属性 可选 类型标识符 <code>,</code> 类型继承集

表达式

表达式语法:

表达式 → try 运算符 可选 await 运算符 可选 前缀表达式 中缀表达式 可选

前缀表达式语法:

前缀表达式 → 前缀运算符 可选 后缀表达式 \ 前缀表达式 → 输入输出表达式

输入输出表达式语法:

输入输出表达式 → <code>&amp;</code> 基础表达式

try 表达式语法:

try 运算符 → <code>try</code> | <code>try</code> <code>?</code> | <code>try</code> <code>!</code>

await 表达式语法:

await 运算符 → <code>await</code>

中缀表达式语法:

中缀表达式 → 中缀运算符 前缀表达式 \ 中缀表达式 → 赋值运算符 try 运算符 可选 await 运算符 可选 前缀表达式 \ 中缀表达式 → 条件运算符 try 运算符 可选 await 运算符 可选 前缀表达式 \ 中缀表达式 → 类型转换运算符 \ 中缀表达式 → 中缀表达式 中缀表达式 可选

赋值运算符语法:

赋值运算符 → <code>=</code>

条件运算符语法:

条件运算符 → <code>?</code> 表达式 <code>:</code>

类型转换运算符语法:

类型转换运算符 → <code>is</code> 类型 \ 类型转换运算符 → <code>as</code> 类型 \ 类型转换运算符 → <code>as</code> <code>?</code> 类型 \ 类型转换运算符 → <code>as</code> <code>!</code> 类型

基础表达式语法:

基础表达式 → 标识符 泛型实参子句 可选 \ 基础表达式 → 字面量表达式 \ 基础表达式 → self 表达式 \ 基础表达式 → 父类表达式 \ 基础表达式 → 条件表达式 \ 基础表达式 → 闭包表达式 \ 基础表达式 → 圆括号表达式 \ 基础表达式 → 元组表达式 \ 基础表达式 → 隐式成员表达式 \ 基础表达式 → 通配符表达式 \ 基础表达式 → 宏展开表达式 \ 基础表达式 → key-path 表达式 \ 基础表达式 → 选择器表达式 \ 基础表达式 → key-path 字符串表达式

字面量表达式语法:

字面量表达式 → 字面量 \ 字面量表达式 → 数组字面量 | 字典字面量 | playground 字面量

数组字面量 → <code>[</code> 数组字面量项 可选 <code>]</code> \ 数组字面量项 → 数组字面量项 <code>,</code> 可选 | 数组字面量项 <code>,</code> 数组字面量项 \ 数组字面量项 → 表达式

字典字面量 → <code>[</code> 字典字面量项 <code>]</code> | <code>[</code> <code>:</code> <code>]</code> \ 字典字面量项 → 字典字面量项 <code>,</code> 可选 | 字典字面量项 <code>,</code> 字典字面量项 \ 字典字面量项 → 表达式 <code>:</code> 表达式

playground 字面量 → <code>#colorLiteral</code> <code>(</code> <code>red</code> <code>:</code> 表达式 <code>,</code> <code>green</code> <code>:</code> 表达式 <code>,</code> <code>blue</code> <code>:</code> 表达式 <code>,</code> <code>alpha</code> <code>:</code> 表达式 <code>)</code> \ playground 字面量 → <code>#fileLiteral</code> <code>(</code> <code>resourceName</code> <code>:</code> 表达式 <code>)</code> \ playground 字面量 → <code>#imageLiteral</code> <code>(</code> <code>resourceName</code> <code>:</code> 表达式 <code>)</code>

self 表达式语法:

self 表达式 → <code>self</code> | self 方法表达式 | self 下标表达式 | self 构造器表达式

self 方法表达式 → <code>self</code> <code>.</code> 标识符 \ self 下标表达式 → <code>self</code> <code>[</code> 函数调用参数表 <code>]</code> \ self 构造器表达式 → <code>self</code> <code>.</code> <code>init</code>

父类表达式语法:

父类表达式 → 父类方法表达式 | 父类下标表达式 | 父类构造器表达式

父类方法表达式 → <code>super</code> <code>.</code> 标识符 \ 父类下标表达式 → <code>super</code> <code>[</code> 函数调用参数表 <code>]</code> \ 父类构造器表达式 → <code>super</code> <code>.</code> <code>init</code>

条件表达式语法:

条件表达式 → if 表达式 | switch 表达式

if 表达式 → <code>if</code> 条件集 <code>{</code> 语句 <code>}</code> if 表达式后续 \ if 表达式后续 → <code>else</code> if 表达式 \ if 表达式后续 → <code>else</code> <code>{</code> 语句 <code>}</code>

switch 表达式 → <code>switch</code> 表达式 <code>{</code> switch表 达式 case <code>}</code> \ switch 表达式 case → switch 表达式 case switch 表达式 case 可选 \ switch case 表达式 → case 标签 语句 \ switch case 表达式 → default 标签 语句

闭包表达式语法:

闭包表达式 → <code>{</code> 属性 可选 闭包签名 可选 语句 可选 <code>}</code>

闭包签名 → 捕获列表 可选 闭包参数子句 <code>async</code> 可选 throws 可选 函数结果 可选 <code>in</code> \ 闭包签名 → 捕获列表 <code>in</code>

闭包参数子句 → <code>(</code> <code>)</code> | <code>(</code> 闭包参数集 <code>)</code> | 标识符集 \ 闭包参数集 → 闭包参数 | 闭包参数 <code>,</code> 闭包参数集 \ 闭包参数 → 闭包参数名 类型注释 可选 \ 闭包参数 → 闭包参数名 类型注释 <code>...</code> \ 闭包参数名 → 标识符

捕获列表 → <code>[</code> 捕获列表项 <code>]</code> \ 捕获列表项 → 捕获列表项 | 捕获列表项 <code>,</code> 捕获列表项 \ 捕获列表项 → 捕获说明符 可选 标识符 \ 捕获列表项 → 捕获说明符 可选 标识符 <code>=</code> 表达式 \ 捕获列表项 → 捕获说明符 可选 self 表达式 \ 捕获说明符 → <code>weak</code> | <code>unowned</code> | <code>unowned(safe)</code> | <code>unowned(unsafe)</code>

隐式成员表达式语法:

隐式成员表达式 → <code>.</code> 标识符 \ 隐式成员表达式 → <code>.</code> 标识符 <code>.</code> 后缀表达式

圆括号表达式语法:

圆括号表达式 → <code>(</code> 表达式 <code>)</code>

元组表达式语法:

元组表达式 → <code>(</code> <code>)</code> | <code>(</code> 元组元素 <code>,</code> 元组元素集 <code>)</code> \ 元组元素集 → 元组元素 | 元组元素 <code>,</code> 元组元素集 \ 元组元素 → 表达式 | 标识符 <code>:</code> 表达式

通配符表达式语法:

通配符表达式 → <code>_</code>

宏展开表达式语法:

宏展开表达式 → <code>#</code> 标识符 泛型参数子句 可选 函数调用参数子句 可选 尾随闭包 可选

key-path 表达式语法:

key-path 表达式 → <code>&amp;grave; 类型 可选 </code>.<code> key-path 组件 \ key-path 组件 → key-path 组件 | key-path 组件 </code>.` key-path 组件 \ key-path 组件 → 标识符 key-path 后缀 可选 | key-path 后缀

key-path 后缀 → key-path 后缀 key-path 后缀 可选 \ key-path 后缀 → <code>?</code> | <code>!</code> | <code>self</code> | <code>[</code> 函数调用参数集 <code>]</code>

选择器表达式语法:

选择器表达式 → <code>#selector</code> <code>(</code> 表达式 <code>)</code> \ 选择器表达式 → <code>#selector</code> <code>(</code> <code>getter:</code> 表达式 <code>)</code> \ 选择器表达式 → <code>#selector</code> <code>(</code> <code>setter:</code> 表达式 <code>)</code>

key-path 字符串表达式语法:

key-path 字符串表达式 → <code>#keyPath</code> <code>(</code> 表达式 <code>)</code>

后缀表达式语法:

后缀表达式 → 基本表达式 \ 后缀表达式 → 后缀表达式 后缀运算符 \ 后缀表达式 → 函数调用表达式 \ 后缀表达式 → 构造器表达式 \ 后缀表达式 → 显式成员表达式 \ 后缀表达式 → 后缀 self 表达式 \ 后缀表达式 → 下标表达式 \ 后缀表达式 → 强制取值表达式 \ 后缀表达式 → 可选链式表达式

函数调用表达式语法:

函数调用表达式 → 后缀表达式 函数调用参数子句 \ 函数调用表达式 → 后缀表达式 函数调用参数子句 可选 尾随闭包

函数调用参数子句 → <code>(</code> <code>)</code> | <code>(</code> 函数调用参数集 <code>)</code> \ 函数调用参数集 → 函数调用参数 | 函数调用参数 <code>,</code> 函数调用参数集 \ 函数调用参数 → 表达式 | 标识符 <code>:</code> 表达式 \ 函数调用参数 → 运算符 | 标识符 <code>:</code> 运算符

尾随闭包 → 闭包表达式 带标签的尾随闭包 可选 \ 带标签的尾随闭包 → 带标签的尾随闭包 带标签的尾随闭包 可选 \ 带标签的尾随闭包 → 标识符 <code>:</code> 闭包表达式

构造器表达式语法:

构造器表达式 → 后缀表达式 <code>.</code> <code>init</code> \ 构造器表达式 → 后缀表达式 <code>.</code> <code>init</code> <code>(</code> 参数名 <code>)</code>

显式成员表达式语法:

显式成员表达式 → 后缀表达式 <code>.</code> 十进制数字 \ 显式成员表达式 → 后缀表达式 <code>.</code> 标识符 泛型参数子句 可选 \ 显式成员表达式 → 后缀表达式 <code>.</code> 标识符 <code>(</code> 参数名 <code>)</code> \ 显式成员表达式 → 后缀表达式 条件编译块

参数名 → 参数名 参数名 可选 \ 参数名 → 标识符 <code>:</code>

后缀 self表达式语法:

后缀 self 表达式 → 后缀表达式 <code>.</code> <code>self</code>

下标表达式语法:

下标表达式 → 后缀表达式 <code>[</code> 函数调用参数集 <code>]</code>

强制取值表达式语法:

强制取值表达式 → 后缀表达式 <code>!</code>

可选链式表达式语法:

可选链式表达式 → 后缀表达式 <code>?</code>

语句

语句语法:

语句 → 表达式 <code>;</code> 可选 \ 语句 → 声明 <code>;</code> 可选 \ 语句 → 循环语句 <code>;</code> 可选 \ 语句 → 分支语句 <code>;</code> 可选 \ 语句 → 标签语句 <code>;</code> 可选 \ 语句 → 控制转移语句 <code>;</code> 可选 \ 语句 → 延迟语句 <code>;</code> 可选 \ 语句 → 执行语句 <code>;</code> 可选 \ 语句 → 编译控制语句 \ 语句集 → 语句 语句集 可选

循环语句语法:

循环语句 → for-in 语句 \ 循环语句 → while 语句 \ 循环语句 → repeat-while 语句

for-in 语句语法:

for-in 语句 → <code>for</code> <code>case</code> 可选 模式 <code>in</code> 表达式 where 子句 可选 代码块

while 语句语法:

while 语句 → <code>while</code> 条件集 代码块

条件集 → 条件 | 条件 <code>,</code> 条件集 \ 条件 → 表达式 | 可用性条件 | case 条件 | 可选绑定条件

case 条件 → <code>case</code> 模式 构造器 \ 可选绑定条件 → <code>let</code> 模式 构造器 可选 | <code>var</code> 模式 构造器 可选

repeat-while 语句语法:

repeat-while 语句 → <code>repeat</code> 代码块 <code>while</code> 表达式

分支语句语法:

分支语句 → if 语句 \ 分支语句 → guard 语句 \ 分支语句 → switch 语句

if 语句语法:

if 语句 → <code>if</code> 条件集 代码块 else 子句 可选 \ else 子句 → <code>else</code> 代码块 | <code>else</code> if 语句

guard 语句语法:

guard 语句 → <code>guard</code> 条件集 <code>else</code> 代码块

switch 语句语法:

switch 语句 → <code>switch</code> 表达式 <code>{</code> switch 语句 可选 <code>}</code> \ switch 语句 → switch 语句 switch 语句 可选 \ switch 语句 → case 标签 语句集 \ switch 语句 → default 标签 语句集 \ switch 语句 → 条件 switch 语句

case 标签 → 属性 可选 <code>case</code> case 项集 <code>:</code> \ case 项集 → 模式 where 子句 可选 | 模式 where 子句 可选 <code>,</code> case 项集 \ default 标签 → 属性 可选 <code>default</code> <code>:</code>

where 子句 → <code>where</code> where 表达式 \ where 表达式 → 表达式

条件 switch 语句 → switch-if 指令子句 switch-elseif 指令子句集 可选 switch-else 指令子句 可选 endif 指令 \ switch-if 指令子句 → if 指令 编译条件 switch-case 集 可选 \ switch-elseif 指令子句 → elseif 指令子句 switch-elseif 指令子句集 可选 \ switch-elseif 指令子句 → elseif 指令 编译条件 switch-case 集 可选 \ switch-else 指令子句 → else 指令 switch-case 集 可选

标签语句语法:

标签语句 → 语句标签 循环语句 \ 标签语句 → 语句标签 if 语句 \ 标签语句 → 语句标签 switch 语句 \ 标签语句 → 语句标签 do 语句

语句标签 → 标签名 <code>:</code> \ 标签名 → 标识符

控制转移语句语法:

控制转移语句 → break 语句 \ 控制转移语句 → continue 语句 \ 控制转移语句 → fallthrough 语句 \ 控制转移语句 → return 语句 \ 控制转移语句 → throw 语句

break 语句语法:

break 语句 → <code>break</code> 标签名 可选

continue 语句语法:

continue 语句 → <code>continue</code> 标签名 可选

fallthrough 语句语法:

fallthrough 语句 → <code>fallthrough</code>

return 语句语法:

return 语句 → <code>return</code> 表达式 可选

throw 语句语法:

throw 语句 → <code>throw</code> 表达式

defer 语句语法:

defer 语句 → <code>defer</code> 代码块

do 语句语法:

do 语句 → <code>do</code> throws 子句 可选 代码块 catch 子句 可选 \ catch 子句集 → catch 子句 catch 子句 可选 \ catch 子句 → <code>catch</code> catch 模式集 可选 代码块 \ catch 模式集 → catch 模式 | catch 模式 <code>,</code> catch 模式集 \ catch 模式 → 模式 where 子句 可选

编译控制语句语法:

编译控制语句 → 条件编译块 \ 编译控制语句 → 行控制语句 \ 编译控制语句 → 诊断语句

条件编译块语法:

条件编译块 → if 指令子句 elseif 指令子句集 可选 else 指令子句 可选 endif 指令

if 指令子句 → if 指令 编译条件 语句集 可选 \ elseif 指令子句 → elseif 指令子句 elseif 指令子句集 可选 \ elseif 指令子句 → elseif 指令 编译条件 语句集 可选 \ else 指令子句 → else 指令 语句集 可选 \ if 指令 → <code>#if</code> \ elseif 指令 → <code>#elseif</code> \ else 指令 → <code>#else</code> \ endif 指令 → <code>#endif</code>

编译条件 → 平台条件 \ 编译条件 → 标识符 \ 编译条件 → 布尔字面量 \ 编译条件 → <code>(</code> 编译条件 <code>)</code> \ 编译条件 → <code>!</code> 编译条件 \ 编译条件 → 编译条件 <code>&amp;&amp;</code> 编译条件 \ 编译条件 → 编译条件 <code>||</code> 编译条件

平台条件 → <code>os</code> <code>(</code> 操作系统 <code>)</code> \ 平台条件 → <code>arch</code> <code>(</code> 体系结构 <code>)</code> \ 平台条件 → <code>swift</code> <code>(</code> <code>&gt;=</code> swift 版本 <code>)</code> | <code>swift</code> <code>(</code> <code>&lt;</code> swift 版本 <code>)</code> \ 平台条件 → <code>compiler</code> <code>(</code> <code>&gt;=</code> swift 版本 <code>)</code> | <code>compiler</code> <code>(</code> <code>&lt;</code> swift 版本 <code>)</code> \ 平台条件 → <code>canImport</code> <code>(</code> 导入路径 <code>)</code> \ 平台条件 → <code>targetEnvironment</code> <code>(</code> 环境 <code>)</code>

操作系统 → <code>macOS</code> | <code>iOS</code> | <code>watchOS</code> | <code>tvOS</code> | <code>visionOS</code> | <code>Linux</code> | <code>Windows</code> \ 体系结构 → <code>i386</code> | <code>x86_64</code> | <code>arm</code> | <code>arm64</code> \ swift 版本 → 十进制数字 swift 版本后缀 可选 \ swift 版本后缀 → <code>.</code> 十进制数字 swift 版本后缀 可选 \ 环境 → <code>simulator</code> | <code>macCatalyst</code>

行控制语句语法:

行控制语句 → <code>#sourceLocation</code> <code>(</code> <code>file:</code> 文件路径 <code>,</code> <code>line:</code> 行号 <code>)</code> \ 行控制语句 → <code>#sourceLocation</code> <code>(</code> <code>)</code> \ 行号 → 大于零的十进制整数 \ 文件路径 → 静态字符串字面量

可用性条件语法:

可用性条件 → <code>#available</code> <code>(</code> 可用性参数 <code>)</code> \ 可用性条件 → <code>#unavailable</code> <code>(</code> 可用性参数 <code>)</code> \ 可用性参数 → 可用性参数 | 可用性参数 <code>,</code> 可用性参数 \ 可用性参数 → 平台名 平台版本 \ 可用性参数 → *<code>**

平台名 → <code>iOS</code> | <code>iOSApplicationExtension</code> \ 平台名 → <code>macOS</code> | <code>macOSApplicationExtension</code> \ 平台名 → <code>macCatalyst</code> | <code>macCatalystApplicationExtension</code> \ 平台名 → <code>watchOS</code> | <code>watchOSApplicationExtension</code> \ 平台名 → <code>tvOS</code> | <code>tvOSApplicationExtension</code> \ 平台名 → <code>visionOS</code> | <code>visionOSApplicationExtension</code> \ 平台版本 → 十进制数字 \ 平台版本 → 十进制数字 <code>.</code> 十进制数字 \ 平台版本 → 十进制数字 <code>.</code> 十进制数字 <code>.</code> 十进制数字

声明

声明语法:

声明 → 导入声明 \ 声明 → 常量声明 \ 声明 → 变量声明 \ 声明 → 类型别名声明 \ 声明 → 函数声明 \ 声明 → 枚举声明 \ 声明 → 结构体声明 \ 声明 → 类声明 \ 声明 → actor 声明 \ 声明 → 协议声明 \ 声明 → 构造器声明 \ 声明 → 析构器声明 \ 声明 → 扩展声明 \ 声明 → 下标声明 \ 声明 → 运算符声明 \ 声明 → 优先级组声明

顶级声明语法:

顶级声明 → 语句集 可选

代码块语法:

代码块 → <code>{</code> 语句集 可选 <code>}</code>

导入声明语法:

导入声明 → 属性 可选 <code>import</code> 导入类型 可选 导入路径

导入类型 → <code>typealias</code> | <code>struct</code> | <code>class</code> | <code>enum</code> | <code>protocol</code> | <code>let</code> | <code>var</code> | <code>func</code> \ 导入路径 → 标识符 | 标识符 <code>.</code> 导入路径

常量声明语法:

常量声明 → 属性 可选 声明修饰符 可选 <code>let</code> 模式构造器集

模式构造器集 → 模式构造器 | 模式构造器 <code>,</code> 模式构造器集 \ 模式构造器 → 模式 构造器 可选 \ 构造器 → <code>=</code> 表达式

变量声明语法:

变量声明 → 变量声明头 模式构造器集 \ 变量声明 → 变量声明头 变量名 类型注解 代码块 \ 变量声明 → 变量声明头 变量名 类型注解 getter-setter \ 变量声明 → 变量声明头 变量名 类型注解 getter-setter 关键字(Keyword)块 \ 变量声明 → 变量声明头 变量名 构造器 willSet-didSet 块 \ 变量声明 → 变量声明头 变量名 类型注解 构造器 可选 willSet-didSet 块

变量声明头 → 属性 可选 声明修饰符 可选 <code>var</code> \ 变量名 → 标识符

getter-setter → 代码块 \ getter-setter → <code>{</code> getter 子句 setter 子句 可选 <code>}</code> \ getter-setter → <code>{</code> setter 子句 getter 子句 <code>}</code> \ getter 子句 → 属性 可选 可变性修饰符 可选 <code>get</code> 代码块 \ setter 子句 → 属性 可选 可变性修饰符 可选 <code>set</code> setter 名 可选 代码块 \ setter 名 → <code>(</code> 标识符 <code>)</code>

getter-setter 关键字(Keyword)块 → <code>{</code> getter 关键字子句 setter 关键字子句 可选 <code>}</code> \ getter-setter 关键字(Keyword)块 → <code>{</code> setter关键字子句 getter 关键字子句 <code>}</code> \ getter 关键字子句 → 属性 可选 可变性修饰符 可选 <code>get</code> \ setter 关键字子句 → 属性 可选 可变性修饰符 可选 <code>set</code>

willSet-didSet 块 → <code>{</code> willSet 子句 didSet 子句 可选 <code>}</code> \ willSet-didSet 块 → <code>{</code> didSet 子句 willSet 子句 可选 <code>}</code> \ willSet 子句 → 属性 可选 <code>willSet</code> setter 名 可选 代码块 \ didSet 子句 → 属性 可选 <code>didSet</code> setter 名 可选 代码块

类型别名声明语法:

类型别名声明 → 属性 可选 访问级别修饰符 可选 <code>typealias</code> 类型别名名 泛型参数子句 可选 类型别名赋值 \ 类型别名名 → 标识符 \ 类型别名赋值 → <code>=</code> 类型

函数声明语法:

函数声明 → 函数头 函数名 泛型参数子句 可选 函数签名 泛型 where 子句 可选 函数体 可选

函数头 → 属性 可选 声明修饰符 可选 <code>func</code> \ 函数名 → 标识符 | 运算符

函数签名 → 参数子句 <code>async</code> 可选 throws 子句 可选 函数结果 可选 \ 函数签名 → 参数子句 <code>async</code> 可选 <code>rethrows</code> 函数结果 可选 \ 函数结果 → <code>-&gt;</code> 属性 可选 类型 \ 函数体 → 代码块

参数子句 → <code>(</code> <code>)</code> | <code>(</code> 参数集 <code>)</code> \ 参数集 → 参数 | 参数 <code>,</code> 参数集 \ 参数 → 外部参数名 可选 本地参数名 参数类型注解 默认参数子句 可选 \ 参数 → 外部参数名 可选 本地参数名 参数类型注解 \ 参数 → 外部参数名 可选 本地参数名 参数类型注解 <code>...</code>

外部参数名 → 标识符 \ 本地参数名 → 标识符 \ 参数类型注解 → <code>:</code> 属性 可选 参数修饰符 可选 类型 \ 参数修饰符 → <code>inout</code> | <code>borrowing</code> | <code>consuming</code> \ 默认参数子句 → <code>=</code> 表达式

枚举声明语法:

枚举声明 → 属性 可选 访问级别修饰符 可选 联合式枚举 \ 枚举声明 → 属性 可选 访问级别修饰符 可选 原始值式枚举

联合式枚举 → <code>indirect</code> 可选 <code>enum</code> 枚举名 泛型参数子句 可选 类型继承子句 可选 泛型 where 子句 可选 <code>{</code> 联合式枚举成员 可选 <code>}</code> \ 联合式枚举成员 → 联合式枚举成员 联合式枚举成员 可选 \ 联合式枚举成员 → 声明 | 联合式枚举 case 子句 | 编译控制语句 \ 联合式枚举 case 子句 → 属性 可选 <code>indirect</code> 可选 <code>case</code> 联合式枚举 case 集 \ 联合式枚举 case 集 → 联合式枚举 case | 联合式枚举 case <code>,</code> 联合式枚举 case 集 \ 联合式枚举 case → 枚举case名 元组类型 可选 \ 枚举名 → 标识符 \ 枚举 case 名 → 标识符

原始值式枚举 → <code>enum</code> 枚举名 泛型参数子句 可选 类型继承子句 泛型 where 子句 可选 <code>{</code> 原始值式枚举成员 原始值式枚举成员集 → 原始值式枚举成员 原始值式枚举成员集可选 \ 原始值式枚举成员集 → 声明 | 原始值式枚举 case 子句 | 编译控制语句 \ 原始值式枚举 case 子句 → 属性可选 <code>case</code> 原始值式枚举 case 集 \ 原始值式枚举 case 集 → 原始值式枚举 case | 原始值式枚举 case <code>,</code> 原始值式枚举 case 集 \ 原始值式枚举 case → 枚举 case 名 原始值赋值可选 \ 原始值赋值 → <code>=</code> 原始值字面量 \ 原始值字面量 → 数值字面量 | 静态字符串字面量 | 布尔字面量

结构声明语法:

结构声明 → 属性可选 访问级别修饰符可选 <code>struct</code> 结构名 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 结构主体 \ 结构名 → 标识符 \ 结构主体 → <code>{</code> 结构成员集可选 <code>}</code>

结构成员集 → 结构成员 结构成员集可选 \ 结构成员 → 声明 | 编译控制语句

类声明语法:

类声明 → 属性可选 访问级别修饰符可选 <code>final</code> 可选 <code>class</code> 类名 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 类主体 \ 类声明 → 属性可选 <code>final</code> 访问级别修饰符可选 <code>class</code> 类名 泛型参数子句可选 类型继承子句可选 泛型 where子句可选 类主体 \ 类名 → 标识符 \ 类主体 → <code>{</code> 类成员可选 <code>}</code>

类成员 → 类成员 类成员可选 \ 类成员 → 声明 | 编译控制语句

actor 声明语法:

actor 声明 → 属性可选 访问级别修饰符可选 <code>actor</code> actor 名 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 actor 主体 \ actor 名 → 标识符 \ actor 主体 → <code>{</code> actor 成员可选 <code>}</code>

actor 成员 → actor 成员 actor 成员可选 \ actor 成员 → 声明 | 编译控制语句

协议声明语法:

协议声明 → 属性可选 访问级别修饰符可选 <code>protocol</code> 协议名 类型继承子句可选 泛型 where 子句可选 协议主体 \ 协议名 → 标识符 \ 协议主体 → <code>{</code> 协议成员可选 <code>}</code>

协议成员 → 协议成员 协议成员可选 \ 协议成员 → 协议成员声明 | 编译控制语句

协议成员声明 → 协议属性声明 \ 协议成员声明 → 协议方法声明 \ 协议成员声明 → 协议构造器声明 \ 协议成员声明 → 协议下标声明 \ 协议成员声明 → 协议关联类型声明 \ 协议成员声明 → 类型别名声明

协议属性声明语法:

协议属性声明 → 变量声明头 变量名 类型注解 getter-setter 关键字块

协议方法声明语法:

协议方法声明 → 函数头 函数名 泛型参数子句可选 函数签名 泛型 where 子句可选

协议构造器声明语法:

协议构造器声明 → 构造器头 泛型参数子句可选 参数子句 抛出子句可选 泛型 where 子句可选 \ 协议构造器声明 → 构造器头 泛型参数子句可选 参数子句 <code>rethrows</code> 泛型 where 子句可选

协议下标声明语法:

协议下标声明 → 下标头 下标结果 泛型 where 子句可选 getter-setter 关键字块

协议关联类型声明语法:

协议关联类型声明 → 属性可选 访问级别修饰符可选 <code>associatedtype</code> 类型别名名 类型继承子句可选 类型别名赋值可选 泛型 where 子句可选

构造器声明语法:

构造器声明 → 构造器头 泛型参数子句可选 参数子句 <code>async</code> 可选 抛出子句可选 泛型 where 子句可选 构造器主体 \ 构造器声明 → 构造器头 泛型参数子句可选 参数子句 <code>async</code> 可选 <code>rethrows</code> 泛型 where 子句可选 构造器主体 \ 构造器头 → 属性可选 声明修饰符可选 <code>init</code> \ 构造器头 → 属性可选 声明修饰符可选 <code>init</code> <code>?</code> \ 构造器头 → 属性可选 声明修饰符可选 <code>init</code> <code>!</code> \ 构造器主体 → 代码块

析构器声明语法:

析构器声明 → 属性可选 <code>deinit</code> 代码块

扩展声明语法:

扩展声明 → 属性可选 访问级别修饰符可选 <code>extension</code> 类型标识符 类型继承子句可选 泛型 where 子句可选 扩展主体 \ 扩展主体 → <code>{</code> 扩展成员可选 <code>}</code>

扩展成员 → 扩展成员 扩展成员可选 \ 扩展成员 → 声明集 | 编译控制语句

下标声明语法:

下标声明 → 下标头 下标结果 泛型 where 子句可选 代码块 \ 下标声明 → 下标头 下标结果 泛型 where 子句可选 getter-setter 块 \ 下标声明 → 下标头 下标结果 泛型 where 子句可选 getter-setter 关键字块 \ 下标头 → 属性可选 声明修饰符可选 <code>subscript</code> 泛型参数子句可选 参数子句 \ 下标结果 → <code>-&gt;</code> 特性可选 类型

宏声明语法:

宏声明 → 宏头 标识符 泛型参数子句可选 宏签名 宏定义可选 泛型 where子句 \ 宏头 → 属性可选 声明修饰符可选 <code>macro</code> \ 宏签名 → 参数子句 宏函数签名结果可选 \ 宏函数签名结果 → <code>-&gt;</code> 类型 \ 宏定义 → <code>=</code> 表达式

运算符声明语法:

运算符声明 → 前缀运算符声明 | 后缀运算符声明 | 中缀运算符声明

前缀运算符声明 → <code>prefix</code> <code>operator</code> 运算符 \ 后缀运算符声明 → <code>postfix</code> <code>operator</code> 运算符 \ 中缀运算符声明 → <code>infix</code> <code>operator</code> 运算符 中缀运算符组可选

中缀运算符组 → <code>:</code> 优先级组名

优先级组声明语法:

优先级组声明 → <code>precedencegroup</code> 优先级组名 <code>{</code> 优先级组属性可选 <code>}</code>

优先级组属性 → 优先级组属性 优先级组属性可选 \ 优先级组属性 → 优先级组关系 \ 优先级组属性 → 优先级组赋值 \ 优先级组属性 → 优先级组结合

优先级组关系 → <code>higherThan</code> <code>:</code> 优先级组名集 \ 优先级组关系 → <code>lowerThan</code> <code>:</code> 优先级组名集

优先级组赋值 → <code>assignment</code> <code>:</code> 布尔字面量

优先级组结合 → <code>associativity</code> <code>:</code> <code>left</code> \ 优先级组结合 → <code>associativity</code> <code>:</code> <code>right</code> \ 优先级组结合 → <code>associativity</code> <code>:</code> <code>none</code>

优先级组名集 → 优先级组名 | 优先级组名 <code>,</code> 优先级组名 \ 优先级组名 → 标识符

声明修饰符语法:

声明修饰符 → <code>class</code> | <code>convenience</code> | <code>dynamic</code> | <code>final</code> | <code>infix</code> | <code>lazy</code> | <code>optional</code> | <code>override</code> | <code>postfix</code> | <code>prefix</code> | <code>required</code> | <code>static</code> | <code>unowned</code> | <code>unowned</code> <code>(</code> <code>safe</code> <code>)</code> | <code>unowned</code> <code>(</code> <code>unsafe</code> <code>)</code> | <code>weak</code> \ 声明修饰符 → 访问级别修饰符 \ 声明修饰符 → 可变性修饰符 \ 声明修饰符 → actor 隔离修饰符 \ 声明修饰符 → 声明修饰符 声明修饰符可选

访问级别修饰符 → <code>private</code> | <code>private</code> <code>(</code> <code>set</code> <code>)</code> \ 访问级别修饰符 → <code>fileprivate</code> | <code>fileprivate</code> <code>(</code> <code>set</code> <code>)</code> \ 访问级别修饰符 → <code>internal</code> | <code>internal</code> <code>(</code> <code>set</code> <code>)</code> \ 访问级别修饰符 → <code>package</code> | <code>package</code> <code>(</code> <code>set</code> <code>)</code> \ 访问级别修饰符 → <code>public</code> | <code>public</code> <code>(</code> <code>set</code> <code>)</code> \ 访问级别修饰符 → <code>open</code> | <code>open</code> <code>(</code> <code>set</code> <code>)</code>

可变性修饰符 → <code>mutating</code> | <code>nonmutating</code>

actor 隔离修饰符 → <code>nonisolated</code>

属性

属性语法:

属性 → <code>@</code> 属性名 属性参数子句可选 \ 属性名 → 标识符 \ 属性参数子句 → <code>(</code> 平衡令牌可选 <code>)</code> \ 属性 → 属性 属性可选

平衡令牌集 → 平衡令牌 平衡令牌集可选 \ 平衡令牌 → <code>(</code> 平衡令牌集可选 <code>)</code> \ 平衡令牌 → <code>[</code> 平衡令牌集可选 <code>]</code> \ 平衡令牌 → <code>{</code> 平衡令牌集可选 <code>}</code> \ 平衡令牌 → 任何标识符、关键字、字面量或运算符 \ 平衡令牌 → 任何标点符号,除了 <code>(</code>, <code>)</code>, <code>[</code>, <code>]</code>, <code>{</code>, 或 <code>}</code>

模式

模式语法:

模式 → 通配符模式 类型注解可选 \ 模式 → 标识符模式 类型注解可选 \ 模式 → 值绑定模式 \ 模式 → 元组模式 类型注解可选 \ 模式 → 枚举 case 模式 \ 模式 → 可选模式 \ 模式 → 类型转换模式 \ 模式 → 表达式模式

通配符模式语法:

通配符模式 → <code>_</code>

标识符模式语法:

标识符模式 → 标识符

值绑定模式语法:

值绑定模式 → <code>var</code> 模式 | <code>let</code> 模式

元组模式语法:

元组模式 → <code>(</code> 元组模式元素集可选 <code>)</code> \ 元组模式元素集 → 元组模式元素 | 元组模式元素 <code>,</code> 元组模式元素集 \ 元组模式元素 → 模式 | 标识符 <code>:</code> 模式

枚举 case 模式语法:

枚举 case 模式 → 类型标识符可选 <code>.</code> 枚举 case 名 元组模式可选

可选模式语法:

可选模式 → 标识符模式 <code>?</code>

类型转换模式语法:

类型转换模式 → is 模式 | as 模式 \ is 模式 → <code>is</code> 类型 \ as 模式 → 模式 <code>as</code> 类型

表达式模式语法:

表达式模式 → 表达式

泛型参数和参数

泛型参数子句语法:

泛型参数子句 → <code>&lt;</code> 泛型参数集 <code>&gt;</code> \ 泛型参数集 → 泛型参数 | 泛型参数 <code>,</code> 泛型参数集 \ 泛型参数 → 类型名 \ 泛型参数 → 类型名 <code>:</code> 类型标识符 \ 泛型参数 → 类型名 <code>:</code> 协议组合类型

泛型 where子句 → <code>where</code> 需求集 \ 需求集 → 需求 | 需求 <code>,</code> 需求集 \ 需求 → 符合要求 | 同类型要求

符合要求 → 类型标识符 <code>:</code> 类型标识符 \ 符合要求 → 类型标识符 <code>:</code> 协议组合类型 \ 同类型要求 → 类型标识符 <code>==</code> 类型

泛型参数子句语法:

泛型参数子句 → <code>&lt;</code> 泛型参数集 <code>&gt;</code> \ 泛型参数集 → 泛型参数 | 泛型参数 <code>,</code> 泛型参数集 \ 泛型参数 → 类型

← 返回目录