gpt4 book ai didi

swift - Swift 是否有空合并运算符?如果没有,自定义运算符的示例是什么?

转载 作者:IT王子 更新时间:2023-10-29 05:00:59 25 4
gpt4 key购买 nike

许多语言的共同特征,Null Coalescing Operator , 是一个二元运算符,通常用于缩短以下类型的表达式:

x = possiblyNullValue NCO valueIfNull

…其中 NCO 是该语言的空合并运算符的占位符。

Objective C 的 Null 合并运算符是 ?:,因此表达式为:

x = possiblyNullValue ?: valueIfNull

上面的表达式也等同于使用三元运算符:

 x =  someTestForNotNull( possiblyNullValue ) ? possiblyNullValue : valueIfNull

空合并运算符的优点

  • 更具可读性的代码(尤其是长的、描述性的变量名)
  • 减少打印错误的可能性(测试的 var 只输入一次)
  • 在被测试变量是 getter 的情况下,不会对被测试变量进行双重评估,因为它被访问过一次(或者需要对其进行缓存以有意避免双重评估)。

最佳答案

从 Swift 2.2(Xcode 6,beta 5)开始,它是 ??

var x: Int?
var y: Int? = 8

var z: Int = x ?? 9000
// z == 9000

z = y ?? 9001
// z == 8

一个?? b 相当于下面的代码:

a != nil ? a! : b

从 Beta 6 开始,您可以这样做:

x ?? y ?? 1 == 8

关于swift - Swift 是否有空合并运算符?如果没有,自定义运算符的示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com