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