位置:首頁 > 高級語言 > 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 十六進製數字 十六進製數字 十六進製數字 十六進製數字 十六進製數字 十六進製數字 十六進製數字 十六進製數字