1.可选项定义
可选项,一般也叫可选类型,它允许将值设置为nil
在类型名称后面加个问号?
来定义一个可选项
从字典中根据key来取值返回的是一个可选类型,需要使用可选绑定来解包。
var name: String? = "Jack"
name = nil
var age: Int? // 默认就是nil
age = 10
age = nil
2.强制解包(Forced Unwrapping)
var age: Int? = 10
let ageInt: Int = age!
3.可选项绑定(Optional Binding)
可选项绑定格式: if let/var 可选项解包表达式 {true的代码}
if let number = Int("123") {
print("字符串转换整数成功:\(number)")
// number是强制解包之后的Int值
// number作用域仅限于这个大括号
} else {
print("字符串转换整数失败")
}
// 字符串转换整数成功:123
if let first = Int("4"),
let second = Int("42"),
first < second && second < 100 {
print("\(second) < \(second) < 100")
}
// 4 < 42 < 100
4.空合并运算符 ??(Nil-Coalescing Operator)
5.guard语句
func login(_ info: [String : String]) {
guard let username = info["username"] else {
print("请输入用户名")
return
}
guard let password = info["password"] else {
print("请输入密码")
return
}
// if username ....
// if password ....
print("用户名:\(username)", "密码:\(password)", "登陆ing")
}
6.隐式解包(Implicitly Unwrapped Optional)
let num1: Int! = 10
let num2: Int = num1
if num1 != nil {
print(num1 + 6) // 16
}
if let num3 = num1 {
print(num3)
}