本文章内容来源于:Swift语言入门 - 网易云课堂。手打,有修改。推荐初学Swift语言的朋友学习。
// Optional,可选类型
var hello = "Hello,world!"
var stringToNumber = Double(hello) // 值为nil(无)
var stringOfNumber = "123"
stringToNumber = Double(stringOfNumber)
print(stringToNumber) // 输出Optional(123.0),
// 可选类型不能进行类型推断,只能先声明
var job: String?
// 加"!"可展开,也叫强制解析
var optionalNumber: Int? = 2
var sum = optionalNumber! + 3
print(optionalNumber!)
// print(job!) // 报错 - 展开一个空的可选类型
// 空合运算符
print(job ?? "没有工作") // job无值,输出默认值
job = "工程师"
print(job ?? "没有工作") // job有值,输出
// 隐式解析
var optionalDecimal: Double! = 2.5
optionalDecimal + 3
// optionalDecimal = nil
// optionalDecimal + 3 // 报错 - 展开一个空的可选类型
// if语句配合可选类型的展开
var optionalInt: Int? = 3
if optionalInt != nil {
print("可选类型optionalInt有值,值为\(optionalInt!)")
} else {
print("可选类型optionalInt没有值")
}
// 可选绑定(可安全展开)
var optionalDouble: Double? = 2.5
if let optionalDouble = optionalDouble {
print("可选类型optionalInt有值,值为\(optionalDouble)")
}
// guard语句的可选绑定
func register(username: String?, password: String?) -> String {
// if let username = username {
// if let password = password {
// return "注册成功,用户名\(username),密码\(password)"
// } else {
// return "密码未填写"
// }
// } else {
// return ("用户名未填写")
// }
//如果可选类型username有值的话,展开并赋值给常量username。如果无值,运行else语句内容
guard let username = username else {
return "用户名未填写"
}
guard let password = password else {
return "密码未填写"
}
return "注册成功,用户名\(username),密码\(password)"
}
print(register(username: "admin", password: nil))
print(register(username: "admin", password: "123456"))