【iOS】空合并运算符 ?? 的小白式规律

386 阅读1分钟
// 🌰🌰🌰
let c = a ?? b

a 和 b 最多只有 1 个 ? 的情况

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

也就是说:c 的类型则是由 b 的类型来决定

a 和 b 多个 ? 的情况

a 不为 nil

a 的 ? 比 b 多

最后返回a 的 ? 数量 - 1次包装的 a

a 的 ? 不比 b 多

最后返回b 的 ? 数量次包装的 a

a 为 nil

a 的 ? 比 b 多

最后返回a 的 ? 数量 - 1次包装的 b

a 的 ? 比 b 少

最后返回b 的 ? 数量 - 1次包装的 a

a 的 ? 跟 b 一样

直接返回 b

PS:直接查看??的源码即可明了,简单来说就是谁的?数量多,进入函数体内都会包装多少次,最后以?数量-1次包装返回。