美文网首页
swift3 -空合运算符(a ?? b)

swift3 -空合运算符(a ?? b)

作者: 生活就是过把瘾 | 来源:发表于2016-11-22 11:07 被阅读0次

“空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

空合运算符是对以下代码的简短表达方法:

a != nil ? a! : b

上述代码使用了三目运算符。当可选类型 a 的值不为空时,进行强制解封(a!),访问 a 中的值;反之返回默认值 b。无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。

注意: 如果 a 为非空值(non-nil),那么值 b 将不会被计算。这也就是所谓的[…]”

“var userDefinedColorName: String?  //默认值为 nil

var colorNameToUse = userDefinedColorName ?? defaultColorName

// userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red"

userDefinedColorName 变量被定义为一个可选的 String 类型,默认值为 nil。由于 userDefinedColorName 是一个可选类型,我们可以使用空合运算符去判断其值。在上一个例子中,通过空合运算符为一个名为 colorNameToUse 的变量赋予一个字符串类型初始值。 由于 userDefinedColorName 值为空,因此表达式 userDefinedColorName ?? defaultColorName 返回 defaultColorName 的值,即 red。

另一种情况,分配一个非空值(non-nil)给 userDefinedColorName,再次执行空合运算,运算结果为封包在 userDefaultColorName 中的值,而非默认值。

userDefinedColorName = "green"

colorNameToUse = userDefinedColorName ?? defaultColorName

// userDefinedColorName 非空,因此 colorNameToUse 的值为 "green”

相关文章

  • Swift 学习碎片

    运算符 空合运算符(Nil Coalescing Operator)空合运算符 (a ?? b) 将对可选类型 a...

  • 空合运算符(Nil Coalescing Operator)、区

    空合运算符(Nil Coalescing Operator) 空合运算符(a ?? b)将对可选类型a进行空判断,...

  • Swift—空合运算符

    *空合运算符(Nil Coalescing Operator)* * 空合运算符(a ?? b)将对可选类型a进行...

  • swift3 -空合运算符(a ?? b)

    “空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b...

  • Swift基础2

    空合运算符 1.空合运算符(a??b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回默认值b。 ...

  • Swift ??

    ?? 空合运算符空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回...

  • swift基本运算符

    空合运算符空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默...

  • 空合运算符(Nil Coalescing Operator)

    空合运算符(a??b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b,这个运算符有两...

  • 空合运算符(Nil Coalescing Operator)

    空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。...

  • Swift 空合运算符(Nil Coalescing Opera

    空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。...

网友评论

      本文标题:swift3 -空合运算符(a ?? b)

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