1. 常量和變量
使用 let 關鍵字聲明常量(Constants)
let maxnNum = 32
使用 var 關鍵字聲明變量(Variables)
var index = 1
swift 是一種類型安全(type safety)的語言,如果變量被初始化爲整數1,則這個變量的類型就是 int
語句的結尾並不需要添加分號
數據類型的關鍵字的首字母是大寫的
1. 基本數據類型
數據類型 | 注意 | 聲明示例 |
---|---|---|
Int | 另有 Int8, Int16 等 | |
Double, Float | Double 爲64位數據,精確到小數點後15位;Float 爲32位數據,精確到小數點後6位 | var red, green, bule : Double |
String | 用雙引號括起來,不需要@符號 | var websitename : String |
Bool | 使用 true 或 false 表示,而不再是 oc 中的 yes 或 no |
1. 聲明不同進制的整型
let decimalInt:Int = 17
let binaryInt:Int = 0b10001
let octalInt:Int = 0o21
let hexadecimalInt = 0x11
2. 聲明科學計數法形式的浮點數
let a = 0.012
let b = 1.2e-2
3. 聲明大數字
用下劃線隔開
let bignum_a = 100000000
let bignum_b = 100_000_000
let bignum_c = 1_0000_0000
4. 隱式類型轉換
let num_a:Float = 1
let num_b:Int = 1.2
5. 強制類型轉換
let a:Int = 3
let b:Double = 0.1415926
let pi:Double = Double(a) + b
6. 使用中文聲明變量
支持任意 Unicode 類型的字符
let 姓名 = “我的名字”
字符串拼接:姓名 + “你好”
7. 定義布爾類型變量
花括號不可省略
整型值不可以作爲布爾值
let trueVal = true
let falseVal = false
if trueVal
{
println("true value")
}
else
{
println("false value")
}
2. 高級數據類型
1. 元組 Tuples
新引進的類型
將多個不同的值集合成一個數據,用逗號分隔,元組中各項可以是不同類型
顯式聲明使用以下形式:
(datatype, datatype, datatype)
用在函數返回值時可以返回一組值而不是單個值
let connectresult = ( 404, “Not Found" )
1. 使用變量名訪問元組
let registrationResult = (true, "username", "sex")
let ( isRegisterSuccess, nickname, gender ) = registrationResult
isRegisterSuccess
nickname
gender
2. 使用點運算符訪問元組
registrationResult.0
registrationResult.1
registrationResult.2
3. 在聲明時爲元組中的分量指定名稱
let registrationResult = (isRegisterSuccess: ture, nickname: "username", gender: "sex")
registrationResult.isRegisterSuccess
registrationResult.nickname
registrationResult.gender
4. 不完整的賦值,使用下劃線忽略部分數值
let loginResult : ( Bool, String ) = (true, "username")
let ( isRegisterSuccess, _) = loginResult
if isRegisterSuccess
{
println("login success ! ");
}
2. 可選值 Optionals
或者是一個值,或者沒有值
沒有值時爲nil(oc 中 nil 表示空指針,swift 中則更爲廣泛)
注意,沒有被初始化的值不能被直接引用,而非隨機值
1. 顯式聲明一個可選的 Int 值
var anOptionalVarible:Int?
此時,可選值的值爲 nil
anOptionalVarible = 12
此時,可選值被初始化爲12
2. 示例
let userInput = "18"
var age = userInput.toInt()
if age != nil
{
println("your age is \(age!)")
}
else
{
println("Invalidate userInput")
}
toInt 方法返回一個可選值,所以 age 是一個可選值
如果用戶輸入的字符可以轉換爲數字,則用插值的方式打印出這個值,否則報錯
把一個一定有值的可選型轉換成相應類型的值,則在 age 後面加一個 “!” 號
強制類型轉換不可以對可選型,而使用 “!” 號就可以了,因爲開發者確定其有值,引用是安全的。
在可選型後面加 “!” 號叫做可選型的解包,在這裏將一個 Int 型的可選型解包爲整型
3. Optional Binding
將判斷和解包結合在一起