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 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字 十六進制數字