Swift之Optional 可选值

  • Optional 是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题
  • 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil
  • 定义变量时,在类型后面添加一个 ?,表示该变量是可选的
  • 变量可选项的默认值是 nil
  • 常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10
  • 如果 Optional 值是 nil,不允许参与计算
  • 只有解包(unwrap)后才能参与计算
  • 在变量后添加一个 !,可以强行解包

注意:必须要确保解包后的值不是 nil,否则会报错

//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10

//: 如果 num 为 nil,使用 `!` 强行解包会报错
let r1 = num! + 100

//: 使用以下判断,当 num 为 nil 时,if 分支中的代码不会执行
if let n = num {
    let r = n + 10
}

常见错误

unexpectedly found nil while unwrapping an Optional value

翻译

在[解包]一个可选值时发现 nil

?? 运算符

  • ?? 运算符可以用于判断 变量/常量 的数值是否是 nil,如果是则使用后面的值替代
  • 在使用 Swift 开发时,?? 能够简化代码的编写
  • 等同于三目运算
let num: Int? = nil

let r1 = (num ?? 0) + 10
print(r1)
时间: 2024-08-07 00:10:10

Swift之Optional 可选值的相关文章

4.Optional 可选值

1.说明 Optional 是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil 定义变量时,在类型后面添加一个 ?,表示该变量是可选的 变量可选项的默认值是 nil 常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值 1.1代码示例 func demo () {       /*       "?"意思是可选项 就是有吗 有值吗 如果没有赋值默认为nil 如果 Optional

关于swift的可选值(optional)

关于可选值optional 不同于OC,swift引入了一个新的概念——可选值,了解这个optional,对于swift的学习至关重要 概念定义:可以有值也可以没有值(nil)的一个类型.换句话说,它有两个状态:有值,没有值(nil) 按我的理解,可选值是带有布尔类型加持的普通类型 如何定义一个可选值呢? 上面的代码简单定义了一个叫做optionalValue的可选值. 和普通的变量定义没有太大区别,唯一不同在于,这里多了一个问号,?是对普通值的封包 要加在类型后面,也就是说,在变量或者常量的所

swift的可选值(optional)

苹果那文档写了一大堆也没有好好的写一下可选值(optional)这个东西.就是在有一个“Optional Chaining”的章节,但是也不是很充分的说明.最后找了半天在“the basics”里墨迹了几句.如果你没找到optional这个东西的话,那你可能也错过了一个很重要的东西,非optional类型的变量,这个变量的值不能是nil.这一点和ObjC以及其他的编程语言如C#.Java什么的差别很大. var example : String = "hello world" exam

Swift学习笔记(2)--元组(Tuples)、Optional(可选值)、(Assertions)断言

1.Tuples(元组) 元组是多个值组合而成的复合值.元组中的值可以是任意类型,而且每一个元素的类型可以是不同的. 1>定义:使用()包含所有元素,用逗号分开,也可以对每个元素做命名 ? 1 2 let http404Error = (404, "Not Found") let http200Status = (statusCode: 200, description: "OK")  //重命名 2>获取元素: a.部分获取:是需要部分元素,其余忽略的

Swift编程语言学习1.6——可选值

可选值 使用可选(optionals)来处理值可能缺失的情况.可选表示: 有值,等于 x   或者没有值 注意: C 和 Objective-C 中并没有可选这个概念.最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示"缺少一个合法的对象".然而,这只对对象起作用--对于结构体,基本的 C 类型或者枚举类型不起作用.对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失.这种方法假设方法的

Swift::3::可选值

可选值(Optional) 在OC,一个class类型的变量,其值既可为一个有效的对象,亦可为nil.但诸如Int,Double等类型则没有nil值.比如,32位Int,超过最大值后,OC 会用NSNotFound处理,而不是nil值.Swift 比OC 更为灵活,直接在语法层面支持所有类型佳能用nil值--可选值(Optional) 如何使用 使用可选值,Swift 提供了非常简洁的方式,直接在类型后加'?',例如定义一个有可选值的整型变量: var optionalInteger: Int?

窥探Swift之新添数据类型元组与可选值

今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional).上面这两个类型是Swift独有的类型,使用起来也是非常方便的,今天就通过一些示例来介绍一下如何初始化和使用元组和可选值类型以及使用元组和可选值类型的场景.废话少说,直奔主题,在今天的示例代码中仍然是使用Playground来测试的.左边是代码,右边是Playground中的结果. 一.Swift中的元组(Tuple) 元组类似于C语言中的结构体(Struct),用来存储一组

swift 可选值

// 可选值 let cities_ = ["Paris": 2241, "Madrid": 3165, "Amsterdam": 827, "Berlin": 3562] //  madridPopulation 的类型是可选类型 Int?,而非 Int.一个 Int? 类型的值是 Int 或者特 //殊的 "缺失" 值 nil let madridPopulation: Int? = cities_[&

【swift初见】Swift可选值Optionals

我们用oc开发的时候,经常会遇到null值的情况,如果不加任何判断的话可能会导致程序崩溃,swift语言添加了可选值这样的概念,基本语法如下: 可选类型: var optValue: Int? = 8 在类型后面加一个?表示optValue这个值可以为nil,"?"就是可选值的一个标记,?其实是一个Optionals的类型,我们可以看看swift的源码: enum Optional<T> : Reflectable, NilLiteralConvertible { case