// // ViewController.swift // 可選項的判斷 // // Created by 思 彭 on 16/9/16. // Copyright © 2016年 思 彭. All rights reserved. // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // demo1(x: 20, y: nil) demo3() } // MARK: - 一般寫法 func demo(x: Int?,y: Int?) { // 1. 強行解包有風險 print(x! + y!) // 2.使用if判斷 直接使用if,使代碼看起來很丑陋 if x != nil && y != nil { print(x! + y!) } else{ print("x或者y為nil") } } //MARK: - ??的使用 func demo1(x: Int?,y: Int?) { // 記得括號括起來 print((x ?? 0) + (y ?? 0)) //20 let name: String? = nil print((name ?? "") + ("你好")) //你好 // 注意: ??優先級低 print(name ?? "" + "思思") // 思思 } // MARK: - if let/var的使用 func demo2() { let userName: String? = "思思" let age: Int? = 20 // 判斷變量的值是否為nil,有值進入分支,不需要解包 if var name = userName,age = age{ name = "加油" age = 30 print(name + String(age)) } else{ print("name或者是age為nil") } } // MARK: - guard let的使用 // 守護有值,和if let相反 ,邏輯代碼少降低分支的層次 func demo3() { let userName: String? = "思思" let age: Int? = 20 guard let name = userName,oage = age else { print("name或者是age為nil") return; } print(name + String(age)) } }