//: Playground - noun: a place where people can playswift
import UIKit安全
var str = "Hello, playground"spa
//可選型 Optional指針
var errorCode:Int = 404it
var errorCode1:Int? = 404io
errorCode = 0class
//直接賦值nilimport
errorCode = nil變量
var color:UIColor = nilsed
//可選型概念
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 + "\nThe 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