Swift 可選類型

Swift.png

1.可選類型的簡單介紹

  • 可選類型:一個變量,可能有值,也可能沒有值
  • 可選類型也是一種數據類型(像 Int,Float)
  • 只有可選類型才能賦值為nil
  • 在Swift中,nil表示沒有值,一個特殊含義的字符
  • 非可選類型,代表無論在什么時候,在哪里都是有值的
  • 在OC開發(fā)中,如果一個變量暫停不使用,可以賦值為0(基本屬性類型)或者賦值為空(對象類型)

2.可選類型定義和使用

2.1聲明

  • 定義聲明,在需要聲明的變量后面添加?
  • 方式二 var num: Optional<Int> = xxx
// 定義的第一種方式
var num:Optional<Int> = 2;
print(num);
//  打印結果:"Optional(2)\n"

//定義的第2種方式
var num2:Int? = 3;
2.2可選類型的使用
  • 在使用的時候需要解析 ! 為強制解析
  • 可選綁定 解析
  • guard守護 解析
var num2:Int? = 3;
//錯誤的寫法,可選類型 不可以直接操作
// num2 += 4;

//1.必須解包  !:表示強制解包
num2 ! + = 4

//上面的寫法 還是有問題的 因為 可選類型 可以nil

if num2 != nil {
    num2! += 4;
}

// 2.可選綁定 

if var  result = num2 {
    print(result);
}
//打印結果:4

//可選綁定的原理: 首先判斷num2是否為nil,如果是,那么if的條件是false,跳過 {},如果不是nil,if的條件為true,會把num2強制解包,賦值給result


//3.函數使用
func test(score: Int?) -> Void{
    
    if var s = score {
        print(s);
        s += 4;
        print(s);
    }
    
}
test(score: 3);


// 使用 guard  復習一下
/*
1. guard必須使用在函數里面
2. guard語句必須帶有else語句
2.1 當條件表達式為true的時候跳過else語句中的內容,執(zhí)行語句組內容
2.2 條件表達式為false的時候執(zhí)行else語句中的內容,跳轉語句一般是return、break、continue和throw
*/
func test1(score: Int?) -> Void{
    
   
    guard var s = score else {
        
        print("為nil")
        return;
    }
    
    s+=1;
    print(s);
    
}


test1(score: 3);

 /* These methods expect their string arguments to contain any percent escape codes that are necessary. It is an error for URLString to be nil.
 */
 public convenience init?(string URLString: String)

//從上面的解釋中可以理解到 這個方法有可能會返回 nil
let url = NSURL(string:"www.baidu.com");

//正確的方式  ---使用可選類型
let url : NSURL? = NSURL(string: "www.baidu.com")
//判斷不為nil時
if let tempUrl = url {
    let request = NSURLRequest(URL: tempUrl)
}

總結: 可選類型 解析的方式有4種

  • 直接判斷 + 強制解包
  • 可選綁定
  • guard守護
  • 空合運算 ?? (三目運算的原理一樣)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 在值可能不存在的情況下,您可以使用可選值。 可選表示兩種可能性:有一個值,您可以解開可選值以訪問該值,或者根本沒有...
    Joker_King閱讀 435評論 0 0
  • 可選類型 在Swift中,可選類型其根源是一個枚舉型,里面有None和Some兩種類型.其實所謂的nil就...
    Amok校長閱讀 357評論 0 0
  • 一、可選類型的概念 定義:一個變量,可以有值,也可以沒有值; 可選類型也是一種類型; 如果是可選類型,可以賦值為 ...
    magic_pill閱讀 253評論 0 1
  • 天寒地凍冷風兮, 月朗星稀趕路急。 勤學苦練鴻鵠展, 東升旭日爭朝夕。
    AK紫凝閱讀 274評論 1 1
  • 2009年,我讀了《影響力》這本書,寫下了一篇讀后感,沒想到在2017年一個豆友給我留言,提醒我還有一遍舊文。不論...
    檸檬遇上好晴天閱讀 473評論 1 3

友情鏈接更多精彩內容