下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 30.2. 标识符 。除了 inout
、var
以及 let
之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,无需添加反引号转义。当一个成员与一个关键字具有相同的名称时,不需要使用反引号来转义对该成员的引用,除非在引用该成员和使用该关键字之间存在歧义 - 例如,self
,Type
和 Protocol
在显式的成员表达式中具有特殊的含义,因此它们必须在该上下文中使用反引号进行转义。
- 用在声明中的关键字:
associatedtype
、class
、deinit
、enum
、extension
、fileprivate
、func
、import
、init
、inout
、internal
、let
、open
、operator
、private
、protocol
、public
、rethrows
、static
、struct
、subscript
、typealias
以及var
。 - 用在语句中的关键字:
break
、case
、continue
、default
、defer
、do
、else
、fallthrough
、for
、guard
、if
、in
、repeat
、return
、switch
、where
以及while
。 - 用在表达式和类型中的关键字:
as
、Any
、catch
、false
、is
、nil
、super
、self
、Self
、throw
、throws
、true
以及try
。 - 用在模式中的关键字:
_
。 - 以井字号(
#
)开头的关键字:#available
、#colorLiteral
、#column
、#else
、#elseif
、#endif
、#error
、#file
、#filePath
、#fileLiteral
、#function
、#if
、#imageLiteral
、#line
、#selector
、#sourceLocation
以及#warning
。 - 特定上下文中被保留的关键字:
associativity
、convenience
、dynamic
、didSet
、final
、get
、infix
、indirect
、lazy
、left
、mutating
、none
、nonmutating
、optional
、override
、postfix
、precedence
、prefix
、Protocol
、required
、right
、set
、Type
、unowned
、weak
以及willSet
。这些关键字在特定上下文之外可以被用做标识符。 - 以下符号被保留为标点符号,不能用于自定义运算符:
(
、)
、{
、}
、[
、]
、.
、,
、:
、;
、=
、@
、#
、&
(作为前缀运算符)、->
、``、
?、以及
!`(作为后缀运算符)。
下一节:字面量(literal) 用来表示源码中某种特定类型的值,比如一个数字或字符串。