美文网首页
Swift5.1学习随笔之空合并运算符??

Swift5.1学习随笔之空合并运算符??

作者: SAW_ | 来源:发表于2020-04-13 17:27 被阅读0次
public func ?? <T>(optional: T?, defaultValue: @autoclosure () throws -> T?) rethrows -> T?
public func ?? <T>(optional: T?, defaultValue: @autoclosure () throws -> T) rethrows -> T

写法:a ?? b

  1. a 是可选项
  2. b 是可选项 或者 不是可选项
  3. ba 的存储类型必须相同
    • 如果 a 不为nil,就返回 a
    • 如果 anil,就返回 b
    • 如果 b 不是可选项,返回 a 时候会自动解包

举例子🌰:

如果 a 不为nil,就返回 a

var a: Int? = 1
var b: Int? = 2
let c = a ?? b // c是Int?,Optional(1)

如果 anil,就返回 b

var a: Int? = nil
var b: Int? = 2
let c = a ?? b // c是Int?,Optional(2)

如果 anil,就返回 b

var a: Int? = nil
var b: Int? = nil
let c = a ?? b // c是Int?,nil

如果 a 不为nil,就返回 a
如果 b 不是可选项,返回 a 时候会自动解包

var a: Int? = 1
var b: Int = 2
let c = a ?? b // c是Int,1

如果 anil,就返回 b

var a: Int? = nil
var b: Int = 2
let c = a ?? b // c是Int,2

多个空运算符一起使用

var a: Int? = 1
var b: Int? = 2
let c = a ?? b ?? 3 // c是Int, 1

解析:由于最右边是3,所以c的类型肯定是Int类型
先看 a ?? b
由于 a 是可选类型,且不为nil,同时 b 也是可选类型,所以 a ?? b 会返回可选类型的 a
再看 a ?? 3
由于 a 不为 nil,所以返回 a,但是 3 不是可选类型,所以 a 会自动解包为 1

var a: Int? = nil
var b: Int? = 2
let c = a ?? b ?? 3 // c是Int, 2
var a: Int? = nil
var b: Int? = nil
let c = a ?? b ?? 3 // c是Int, 3

相关文章

  • Swift5.1学习随笔之空合并运算符??

    写法:a ?? b a 是可选项 b 是可选项 或者 不是可选项 b 跟 a 的存储类型必须相同如果 a 不为ni...

  • Swift 运算符

    合并空值运算符:?? 合并空值运算符(a ?? b) 如果可选项 a 有值则展开,如果没有值,是nil,则返回默认...

  • 理解php中的?:与??

    三元运算符(?:) php 5.3 空合并运算符(??)php 7

  • ★ iOS高级:Swift入门精讲③ 01 swift编程-09

    前言:本篇仅为视频学习笔记 空合并运算符 ?? (Nil-Coalescing Operator)上图是swift...

  • 合并空值运算符

    合并空值运算符 合并空值运算符(a ?? b):如果可选项 a 有值则展开,如果没有值,是nil,则返回默认值 b...

  • Optional:合并空值运算符

    合并空值运算符 合并空值运算符(a ?? b)如果可选项 a 有值则展开,如果没有值,是nil,则返回默认值 b...

  • Swift 浅谈

    空合并运算符 元祖 数组 字典 Set 运算符 while和repeat-while 条件循环结构 repeat ...

  • Kotlin基础学习记录一

    ?.安全调用运算符 ?: Elvis运算符(null 合并运算符) 使用?:运算符可以检查当检查结果为空的时候的返...

  • C#高级编程

    简介 过一下基础东西,学习一下不常用的特性 命名参数&可选参数 可空类型 ?? :合并运算符 ?:可空类型 构造函...

  • JavaScript 中目前比较少见的表达式

    ??:空值合并运算符es2020[https://developer.mozilla.org/zh-CN/docs...

网友评论

      本文标题:Swift5.1学习随笔之空合并运算符??

      本文链接:https://www.haomeiwen.com/subject/julnmhtx.html