//: 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