Swif

//: Playground - noun: a place where people can play

 

import UIKit

 

var str = "Hello, playground"

 

//可选型 Optional

 

var errorCode:Int = 404

var errorCode1:Int? = 404

 

errorCode = 0

 

//直接赋值nil

errorCode = nil

var color:UIColor = nil

 

//可选型概念

errorCode1 = nil

var color2:UIColor? = nil//color2可以是一个UIColor 也可以是nil

errorCode1 = errorCode

 

 

print(errorCode1)

 

 

 

var errorCode:String? = "404"

print(errorCode)

 

//可选型是不能直接被使用的,swift安全的体现,防止空指针

errorCode += "The"

 

//Unwrap 解包 (可选型需要被解包后才能使用)

errorCode! += "The"//强制解包 (在可选型的后面直接添加"!"

 

errorCode

 

//新语法进行解包

if let errorCode = errorCode {

    errorCode + " The "

}

else {

    "NO error"

}

 

var errorMessage:String? = "Not found"

 

//一次解包多个变量

 

 

if let errorCode = errorCode,

   let errorMessage = errorMessage {

    "The errorCode is " + errorCode + " The errorMessage is" + errorMessage

}

 

 

//Optional Chaining

 

var erroMessage:String? = "Not found"

if let errorMeaage = erroMessage {

    errorMeaage.uppercased()

}

 

//这就是Option Chinaining 链条方式

erroMessage?.uppercased()//和上面的意思一样

 

 

var uppercaseErrorMessage = erroMessage?.uppercased()

if let errorMessage = erroMessage?.uppercased() {

    erroMessage

}

 

//nil coalesce

 

//1.不安全

var errorMessage:String? = nil

 

let message: String

if let errorMessage = errorMessage {

    message = errorMessage

}

else {

    message = "no error"

}

 

 

//2

let message2 = errorMessage == nil ? "No error" : errorMessage

 

//3.nil coalesce

let message3 = errorMessage ?? "No error"//双问号

 

//以上三种方式结果一样

 

 

 

//可选型在元组中的使用

var error1:(errorCode:Int, errorMessage:String?) = (404, "Not Found")

error1.errorMessage = nil

 

//可选型现实中的应用

var ageInput: String = "16"

var age = Int(ageInput)

if let age = Int(ageInput) , age < 20 {

    print("You're a teenager!")

}

 

//隐式可选型

 

 

 

var errorMessage:String? = nil

errorMessage = "Not found"

"The message is " + errorMessage!

 

//隐式可选型

var errorMessage1:String! = nil

errorMessage1 = "Not found"

 

"The messgae is " + errorMessage1

 

 

 

原文地址:https://www.cnblogs.com/zrr-notes/p/6025813.html