Swift 學習筆記

型別

整數

內建有號整數型別:Int8Int16Int32Int64

內建無號整數型別:UInt8UInt16UInt32UInt64

Int等同Int64UInt等同UInt64。表達數值可以使用底線_提升可讀性。

var num = 123_456_789       //return: 123456789

內建定義整數最大、最小值。

var uiMin = UInt.min        //return: 0
var uiMax = UInt.max        //return: 18446744073709551615
var iMin = Int.min          //return: -9223372036854775808
var iMax = Int.max          //return: 9223372036854775807

浮點數

浮點數使用Double(64-bit)、Float(32-bit)表達。

var pi = 3.14159265359

布林值

布林值(Bool)只有兩個值truefalse,不可用數字01表示。

var dream = true

字串

字串(String)使用兩個引號"包含要描述的字元組。

var message = "hello world"

型別推斷 (Type Inference)

Swift 是一種很聰明的語言。通常能從=左邊推測右邊的變數或常數的型別,當然使用者也可以自行宣告。以下整數、浮點數、布林數、字串宣告方式顯式與隱式意義相同。

var i1 = 123
var i2: Int = 123

var d1 = 3.14
var d2: Double = 3.14

var b1 = true
var b2: Bool = true

var s1 = "hello"
var s2: String = "hello"

型別安全 (Type Safety)

Swift 也是一種非常龜毛嚴謹的語言。

  • 宣告變數不能只宣告名稱。
  • 常數、變數使用前必須給定初值。
  • 變數型別一旦決定就無法變更。
  • 整數溢位會造成系統崩潰。
  • 型別轉換必須顯式指定型別。
var num             //error: type annotation missing in pattern
num = 1

var num1 = 100
var num2: Int
num1 = num2         //error: variable 'num2' used before being initialized

var max = UInt8.max
max = max + 1       //Execution was interrupted, reason: EXC_BAD_INSTRUCTION

var str = "hello"
str = 123           //error: cannot assign a value of type 'Int' to a value of type 'String'

var v1 = 123        //type: Int
var v2 = String(v1) //type: String