關于元組,可選類型,強制解析,斷言等等.....
Swift 學習 第一天(本來準備上傳到自己搭建的博客,結果一個hexo d 命令下去,直接全部清空了...心塞,不想再搞了,直接發(fā)簡書)
元組(tuples)
swift 相對于OC 新增的內容
可以把元組看成一個數(shù)組類型,OC 中數(shù)組里只能存放相同類型的對象;元組和它的區(qū)別是可以添加任意數(shù)量的,任意不同類型的對象.
基本寫法如下
let http404Error = (404, "Not Found")
// http404Error 的類型是 (Int, String),值是 (404, "Not Found")
但是我更喜歡這種寫法
let http404Error = (statusCode:404,statusMessage: "Not Found");
在定義的同時給每個元素命名,可閱讀性增強,在也便于使用時的拆分;
取元組中的元素有兩種方式
- 對比OC數(shù)組下標來理解
http404Error.0 - 如果你命名了元素, 你可以通過
http404Error.statusCode來取值,這樣更容易理解
可選類型(optionals)
又一個不同之處
對于一個可選類型來說,它可以有值,也可以沒值,這就是可選這個名稱的由來
在OC中,將一個字符串轉化為一個integer類型(前提是能轉,不能轉,運行會報錯),這也是很常見的需求
例如 NSString *text = @"123";
將text轉化為NSInteger 可以用這個方法[text integerValue];
在swift中String轉化為Int,這樣寫
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推測為類型 "Int?", 或者類型 "optional Int"
在possibleNumber是由純數(shù)字組成的字符串時;swift可以很正常的轉換,但是如果不是,那么,swift無法轉換,這樣的話,convertedNumber是沒有值,也就是nil;這就是optional xx的意思,它可以有值,如果沒有值就返回一個nil.
可選類型的定義:
var str : String?
如果,定義時沒有給值,那么系統(tǒng)默認值為nil
隱式解析可選類型
對于我們日常編程中,對于某一個可選變量optionalValue,我們知道它肯定有值,并且我們也要使用它的值,那么,我們可以用optionalValue!來告訴系統(tǒng),我知道它有值,請使用這個值
這種用法,swift稱它為強制解析
既然我們在使用它時,可以用optionalValue!,那么如果我們在定義的時候這樣寫,代表什么含義?
var str : String! = "hello world"
這代表一個隱式解析可選類型;
第一次被賦值之后,可以確定一個可選類型總會有值.
隱式解析可選類型可以看做一個可以自動解析的可選類型。只要在聲明的時候把感嘆號放到類型的結尾,而不是每次取值的可選名字的結尾。
強制解析(forced unwrapping)
對于一個可選類型,我們清楚它有值,而且也要用它,寫作optionalValue!來取它的值,這樣叫做強制解析.
斷言(assertion)
主要在調試的時候使用, 給其一個條件,他會判斷,這個條件是否為true,如果是,那么繼續(xù)運行,如果不是,則報錯;
文檔中一個例子很好的說明這個:
let age = -3 assert(age >= 0, "一個人的年齡不能小于0") // 因為 age < 0,所以斷言會觸發(fā)
斷言信息一個人的年齡不能小于0,如果不需要,可以省略
以上是Swift學習第一天,因為之前是主要語言是OC,在學習筆記中,我會有很多處與OC的對比,來加深我的記憶,也便于自己的理解