swift篇 基础知识3--可选类型(optionals)

使用可选类型(optionals)来处理 值可能缺失 的情况。 可选类型表示两种可能:

或者有值,可以解析可选类型访问这个值

或者根本没有值,可以给可选变量赋值为nil来表示它没有值

nil

nil不能用于非可选的常量和变量

如果声明一个可选常量或者变量但是没有赋值,它们会自动被设置为nil:

var survey: String?
//survey 被自动设置为nil

在Objectivw-C中,nil是一个指向不存在对象的指针,在swift中,nil不是指针,它是一个确定的值,用来表示值缺失。

任何类型的可选状态都可以被设置为nil,不只是对象类型

if语句以及强制解析

可以使用if语句和nil比较来判断一个可选值是否包含值。可以使用“相等”(==)或者“不等”(!=)来执行比较

如果可选类型有值,它将不等于nil

let poss = "123"
var converted = Int(poss)
//converted 被推测为类型“Int?”,或者类型“optional Int”
if converted != nil{
    print("converted is not nil")
}
//输出 "converted is not nil"

 当你确定可选类型确定包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值,这被称为可选值的强制解析

⚠️:使用!来获取一个不存在的可选值会导致允许的错误。

强制解析之前,一定确定可选包含一个非nil的值

if converted != nil {
    print("converted has a value is \(converted!)")
}
//输出 "converted has a value is 123"

可选绑定

使用可选绑定(optional binding)来判断可选类型是否包含值

如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在if和while语句中:

let possibleNumber = "123"
if let actualNumber = Int(possibleNumber) {
    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
    print("\'\(possibleNumber)\' could not be converted to an integer")
}
// 输出“'123' has an integer value of 123”
let possibleNumber = "String"
if let actualNumber = Int(possibleNumber) {
    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
    print("\'\(possibleNumber)\' could not be converted to an integer")
}
//输出 'String' could not be converted to an integer

 

你可以包含多个可选绑定或多个布尔条件在一个 if 语句中,只要使用逗号分开就行。只要有任意一个可选绑定的值为 nil,或者任意一个布尔条件为 false,则整个 if 条件判断为 false。下面的两个 if 语句是等价的:

if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// 输出“4 < 42 < 100”

if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("\(firstNumber) < \(secondNumber) < 100")
        }
    }
}
// 输出“4 < 42 < 100”

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值