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