位置:首页 > 高级语言 > Swift在线教程 > Swift字面量

Swift字面量

字面量

字面值表示整型、浮点型数字或文本类型的值,举例如下:

42                 // 整型字面量
3.14159            // 浮点型字面量
"Hello, world!"    // 文本型字面量


字面量语法
字面量 → 整型字面量 | 浮点数字面量 | 字符串字面量
 

整型字面量

整型字面量(integer literals)表示未指定精度整型数的值。整型字面量默认用十进制表示,可以加前缀来指定其他的进制,二进制字面量加 0b,八进制字面量加 0o,十六进制字面量加 0x

十进制字面量包含数字 0 至 9。二进制字面量只包含 0 或 1,八进制字面量包含数字 0 至 7,十六进制字面量包含数字 0 至 9 以及字母 A 至 F (大小写均可)。

负整数的字面量在数字前加减号 -,比如 -42

允许使用下划线 _ 来增加数字的可读性,下划线不会影响字面量的值。整型字面量也可以在数字前加 0,同样不会影响字面量的值。

1000_000     // 等于 1000000
005          // 等于 5

除非特殊指定,整型字面量的默认类型为 Swift 标准库类型中的 Int。Swift 标准库还定义了其他不同长度以及是否带符号的整数类型,请参考 整数类型


整型字面量语法
整型字面量 → 二进制字面量
整型字面量 → 八进制字面量
整型字面量 → 十进制字面量
整型字面量 → 十六进制字面量
二进制字面量 → 0b 二进制数字 二进制字面量字符列表 可选
二进制数字 → 数值 0 到 1
二进制字面量字符 → 进制数字 | _
二进制字面量字符列表 → 二进制字面量字符 二进制字面量字符列表 可选
八进制字面量 → 0o 八进字数字 八进制字符列表 可选
八进字数字 → 数值 0 到 7
八进制字符 → 八进字数字 | _
八进制字符列表 → 八进制字符 八进制字符列表 可选
十进制字面量 → 十进制数字 十进制字符列表 可选
十进制数字 → 数值 0 到 9
十进制数字列表 → 十进制数字 十进制数字列表 可选
十进制字符 → 十进制数字 | _
十进制字符列表 → 十进制字符 十进制字符列表 可选
十六进制字面量 → 0x 十六进制数字 十六进制字面量字符列表 可选
十六进制数字 → 数值 0 到 9, a through f, or A through F
十六进制字符 → 十六进制数字 | _
十六进制字面量字符列表 → 十六进制字符 十六进制字面量字符列 可选
 

浮点型字面量

浮点型字面量(floating-point literals)表示未指定精度浮点数的值。

浮点型字面量默认用十进制表示(无前缀),也可以用十六进制表示(加前缀 0x)。

十进制浮点型字面量(decimal floating-point literals)由十进制数字串后跟小数部分或指数部分(或两者皆有)组成。十进制小数部分由小数点 . 后跟十进制数字串组成。指数部分由大写或小写字母 e 后跟十进制数字串组成,这串数字表示 e 之前的数量乘以 10 的几次方。例如:1.25e2 表示 1.25 ⨉ 10^2,也就是 125.0;同样,1.25e-2 表示 1.25 ⨉ 10^-2,也就是 0.0125

十六进制浮点型字面量(hexadecimal floating-point literals)由前缀 0x 后跟可选的十六进制小数部分以及十六进制指数部分组成。十六进制小数部分由小数点后跟十六进制数字串组成。指数部分由大写或小写字母p 后跟十进制数字串组成,这串数字表示 p 之前的数量乘以 2 的几次方。例如:0xFp2 表示15 ⨉ 2^2,也就是 60;同样,0xFp-2 表示 15 ⨉ 2^-2,也就是 3.75

与整型字面量不同,负的浮点型字面量由一元运算符减号 - 和浮点型字面量组成,例如 -42.0。这代表一个表达式,而不是一个浮点整型字面量。

允许使用下划线 _ 来增强可读性,下划线不会影响字面量的值。浮点型字面量也可以在数字前加 0,同样不会影响字面量的值。

10_000.56     // 等于 10000.56
005000.76     // 等于 5000.76

除非特殊指定,浮点型字面量的默认类型为 Swift 标准库类型中的 Double,表示64位浮点数。Swift 标准库也定义 Float 类型,表示32位浮点数。


浮点型字面量语法
浮点数字面量 → 十进制字面量 十进制分数 可选 十进制指数 可选
浮点数字面量 → 十六进制字面量 十六进制分数 可选 十六进制指数
十进制分数 → . 十进制字面量
十进制指数 → 浮点数e 正负号 可选 十进制字面量
十六进制分数 → . 十六进制字面量 可选
十六进制指数 → 浮点数p 正负号 可选 十六进制字面量
浮点数e → e | E
浮点数p → p | P
正负号 → + | -
 

文本型字面量

文本型字面量(string literal)由双引号中的字符串组成,形式如下:

"characters"

文本型字面量中不能包含未转义的双引号 "、未转义的反斜线\、回车符(carriage return)或换行符(line feed)。

可以在文本型字面量中使用的转义特殊符号如下:

  • 空字符(Null Character)\0
  • 反斜线(Backslash)\\
  • 水平 Tab (Horizontal Tab)\t
  • 换行符(Line Feed)\n
  • 回车符(Carriage Return)\r
  • 双引号(Double Quote)\"
  • 单引号(Single Quote)\'

字符也可以用以下方式表示:

  • \x 后跟两位十六进制数字
  • \u 后跟四位十六进制数字
  • \U 后跟八位十六进制数字

后跟的数字表示一个 Unicode 码点。

文本型字面量允许在反斜线小括号 \() 中插入表达式的值。插入表达式(interpolated expression)不能包含未转义的双引号 "、反斜线 \、回车符或者换行符。表达式值的类型必须在 String 类中有对应的初始化方法。

例如,以下所有文本型字面量的值相同:

"1 2 3"
"1 2 \(3)"
"1 2 \(1 + 2)"
var x = 3; "1 2 \(x)"

文本型字面量的默认类型为 String。组成字符串的字符类型为 Character。更多有关 String 和Character 的信息请参照 字符串和字符


字符型字面量语法
字符串字面量 → " 引用文本 "
引用文本 → 引用文本条目 引用文本 可选
引用文本条目 → 转义字符
引用文本条目 → ( 表达式 )
引用文本条目 → 除了"­, \­, U+000A, or U+000D的所有Unicode的字符
转义字符 → \0 | \ | \t | \n | \r | \" | \'
转义字符 → \x 十六进制数字 十六进制数字
转义字符 → \u 十六进制数字 十六进制数字 十六进制数字 十六进制数字
转义字符 → \U 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字