import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = 1;//a被定義為常量后就不允許修改了
var f = "hello Wrold";//var定義變量
f = "penglei";
//也可以直接給變量指定類型
var red,green,bule:Double;
//數(shù)值類字面量可以包括額外的格式來增強可讀性厘线。整數(shù)和浮點數(shù)都可以添加額外的零并且包含下劃線,并不會影響字面量
let oneMillion = 1_000_000
print(a,"I love\(f)",oneMillion);
let twoThousand: UInt16 = 2_000
let ont:UInt8 = 1;
//常量twoThousand是UInt16類型出革,然而常量one是UInt8類型造壮。它們不能直接相加,因為它們類型不同骂束。所以要調(diào)用UInt16(one)來創(chuàng)建一個新的UInt16數(shù)字并用one的值來初始化耳璧,然后使用這個新數(shù)字來計算
let twoThousandAndone = twoThousand + UInt16(ont);
//類型別名(type aliases)就是給現(xiàn)有類型定義另一個名字。你可以使用typealias關鍵字來定義類型別名展箱。當你想要給現(xiàn)有類型起一個更有意義的名字時旨枯,類型別名非常有用。假設你正在處理特定長度的外部資源的數(shù)據(jù):
typealias AudioSample = UInt16;
var maxAmplitudeFound = AudioSample.min;
//Swift 有一個基本的布爾(Boolean)類型混驰,叫做Bool攀隔。布爾值指邏輯上的值,因為它們只能是真或者假栖榨。Swift 有兩個布爾常量昆汹,true和false:
let orangesAreOrange = true;
let turnipsAreDelicious = false;
//元組(tuples)把多個值組合成一個復合值。元組內(nèi)的值可以是任意類型婴栽,并不要求是相同類型,你可以把任意順序的類型組合成一個元組满粗,這個元組可以包含所有類型。只要你想愚争,你可以創(chuàng)建一個類型為(Int, Int, Int)或者(String, Bool)或者其他任何你想要的組合的元組映皆。
//(404, "Not Found")元組把一個Int值和一個String值組合起來表示 HTTP 狀態(tài)碼的兩個部分:一個數(shù)字和一個人類可讀的描述。這個元組可以被描述為“一個類型為(Int, String)的元組”
let http404Error = (404,"Not Found");
//你可以將一個元組的內(nèi)容分解(decompose)成單獨的常量和變量轰枝,然后你就可以正常使用它們了
let (statusCode,statisMessage) = http404Error;
//輸出為The status code is (404, "Not Found")
print("The status code is \(statusCode,(statisMessage))");
//如果你只需要一部分元組值捅彻,分解的時候可以把要忽略的部分用下劃線(_)標記:
let (justTheStatusCode,_) = http404Error;
print(justTheStatusCode);
//此外,你還可以通過下標來訪問元組中的單個元素狸膏,下標從零開始
print(http404Error.0);
//你可以在定義元組的時候給單個元素命名,給元組中的元素命名后沟饥,你可以通過名字來獲取這些元素的值:
let http404Status = (statu:200,description:"error");
//輸出200 error
print(http404Status.statu,http404Status.description);
//可選類型使用可選類型(optionals)來處理值可能缺失的情況⊥宕粒可選類型表示:有值,等于 x或者沒有值
//ResponeseCode包含一個可選的Int值404
var ResponeseCode:Int? = 404;
//你可以給可選變量賦值為nil來表示它沒有值,ResponeseCode現(xiàn)在不包含值nil不能用于非可選的常量和變量广料。如果你的代碼中有常量或者變量需要處理值缺失的情況砾脑,請把它們聲明成對應的可選類型
ResponeseCode = nil;
//如果你聲明一個可選常量或者變量但是沒有賦值,它們會自動被設置為nil
//Swift 的nil和 Objective-C 中的nil并不一樣艾杏。在 Objective-C 中韧衣,nil是一個指向不存在對象的指針。在 Swift 中,nil不是指針——它是一個確定的值畅铭,用來表示值缺失氏淑。任何類型的可選狀態(tài)都可以被設置為nil,不只是對象類型
var Answer:String?;//answer被自動設置為nil
Answer = "peng";
//你確定可選類型確實包含值之后硕噩,你可以在可選的名字后面加一個感嘆號(!)來獲取值假残。這個驚嘆號表示“我知道這個可選有值,請使用它炉擅』岳粒”這被稱為可選值的強制解析(forced unwrapping)
if Answer != nil{
//輸入結果:Answer has an string value of peng
print("Answer has an string value of \(Answer!)");
}
//可選綁定:使用可選綁定(optional binding)來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變量谍失】袅可選綁定可以用在if和while語句中,這條語句不僅可以用來判斷可選類型中是否有值快鱼,同時可以將可選類型中的值賦給一個常量或者變量
let str: String? = "peng"
//if 判斷可選變量 str 是否為nil,如果str不為nil程序?qū)tr執(zhí)行強制解析颠印,并將解析到的值賦給actilanswer
if let actulAnswer = str {
//輸出結果'Optional("peng")'has an string value of peng
print("\'\(str)\'has an string value of \(actulAnswer)")
}
//隱式解析可選類型有時候在程序架構中,第一次被賦值之后抹竹,可以確定一個可選類型_總會_有值线罕。在這種情況下,每次都要判斷和解析可選值是非常低效的柒莉,因為可以確定它總會有值闻坚。這種類型的可選狀態(tài)被定義為隱式解析可選類型(implicitly unwrapped optionals)。把想要用作可選的類型的后面的問號(String?)改成感嘆號(String!)來聲明一個隱式解析可選類型兢孝。當可選類型被第一次賦值之后就可以確定之后一直有值的時候窿凤,隱式解析可選類型非常有用。隱式解析可選類型主要被用在 Swift 中類的構造過程中
let possibleString:String? = "peng";
let forcedString :String = possibleString!;//需要感嘆號執(zhí)行強制解析
let s :String! = "peng";
let s1 :String = s;//不需要感嘆號執(zhí)行強制解析
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}