@ -136,7 +136,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言
|
||||
>
|
||||
> *隐式参数名* → **$** [*十进制数字列表*](#decimal-digit)
|
||||
|
||||
## 关键字和标点符号
|
||||
## 关键字和标点符号 {#keywords-and-punctuation}
|
||||
|
||||
下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 [标识符](#identifiers)。除了 `inout`、`var` 以及 `let` 之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,无需添加反引号转义。当一个成员与一个关键字具有相同的名称时,不需要使用反引号来转义对该成员的引用,除非在引用该成员和使用该关键字之间存在歧义 - 例如,`self`,`Type` 和 `Protocol` 在显式的成员表达式中具有特殊的含义,因此它们必须在该上下文中使用反引号进行转义。
|
||||
|
||||
@ -149,7 +149,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言
|
||||
|
||||
以下符号被当作保留符号,不能用于自定义运算符: `(`、`)`、`{`、`}`、`[`、`]`、`.`、`,`、`:`、`;`、`=`、`@`、`#`、`&`(作为前缀运算符)、`->`、`` ` ``、`?`、`!`(作为后缀运算符)。
|
||||
|
||||
## 字面量
|
||||
## 字面量 {#literal}
|
||||
|
||||
*字面量(literal)* 用来表示源码中某种特定类型的值,比如一个数字或字符串。
|
||||
|
||||
|
||||
@ -1,20 +1,5 @@
|
||||
# 类型(Types)
|
||||
|
||||
本页包含内容:
|
||||
|
||||
- [类型注解](#type_annotation)
|
||||
- [类型标识符](#type_identifier)
|
||||
- [元组类型](#tuple_type)
|
||||
- [函数类型](#function_type)
|
||||
- [数组类型](#array_type)
|
||||
- [字典类型](#dictionary_type)
|
||||
- [可选类型](#optional_type)
|
||||
- [隐式解析可选类型](#implicitly_unwrapped_optional_type)
|
||||
- [协议合成类型](#protocol_composition_type)
|
||||
- [元类型](#metatype_type)
|
||||
- [类型继承子句](#type_inheritance_clause)
|
||||
- [类型推断](#type_inference)
|
||||
|
||||
Swift 语言存在两种类型:命名型类型和复合型类型。*命名型类型*是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。
|
||||
|
||||
那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/20_Extensions.md) 和 [扩展声明](./06_Declarations.md#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。
|
||||
@ -25,10 +10,10 @@ Swift 语言存在两种类型:命名型类型和复合型类型。*命名型
|
||||
|
||||
本节讨论 Swift 语言本身定义的类型,并描述 Swift 中的类型推断行为。
|
||||
|
||||
#### type {#type}
|
||||
|
||||
> 类型语法
|
||||
>
|
||||
|
||||
#### type {#type}
|
||||
> *类型* → [*数组类型*](#array-type)
|
||||
>
|
||||
> *类型* → [*字典类型*](#dictionary-type)
|
||||
|
||||
@ -8,8 +8,6 @@
|
||||
|
||||
> 语句语法
|
||||
>
|
||||
|
||||
#### statement {#statement}
|
||||
> *语句* → [*表达式*](./04_Expressions.md#expression) **;**<sub>可选</sub>
|
||||
>
|
||||
> *语句* → [*声明*](./06_Declarations.md#declaration) **;**<sub>可选</sub>
|
||||
@ -28,8 +26,6 @@
|
||||
>
|
||||
> *语句* → [*编译器控制语句*](#compiler-control-statement)
|
||||
>
|
||||
|
||||
#### statements {#statements}
|
||||
> *多条语句* → [*语句*](#statement) [*多条语句*](#statements)<sub>可选</sub>
|
||||
>
|
||||
|
||||
@ -832,7 +828,7 @@ statements to compile if both compilation conditions are false
|
||||
> *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal)
|
||||
>
|
||||
|
||||
### 编译时诊断语句
|
||||
### 编译时诊断语句 {#compile-time-diagnostic-statement}
|
||||
|
||||
编译时诊断语句允许编译器在编译的时候可以发出错误或者警告。语句形式如下:
|
||||
|
||||
@ -852,8 +848,6 @@ statements to compile if both compilation conditions are false
|
||||
>
|
||||
> *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)**
|
||||
>
|
||||
|
||||
#### grammar_diagnostic-message {#grammar-diagnostic-message}
|
||||
> *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal)
|
||||
>
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
# 声明(Declarations) {#declarations}
|
||||
|
||||
*声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构体、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。
|
||||
|
||||
在 Swift 中,大多数声明在某种意义上讲也是定义,因为它们在声明时往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。
|
||||
|
||||
Reference in New Issue
Block a user