swift从入门到精通05-可选项

629 阅读1分钟

1.基本概念

可选项(optIonal)也叫可选类型,它允许把值设为nil,一般我们都在类型名称后面加?。

例子:

var str:String? = "可选项"
str = nil

2.强制解包

如果从可选类型中取出被包装的内容,一般用感叹号!进行强制解包。

例子:

var str:String? = "可选项"
var str2:String = str!

3.判断可选项是否包含值

例子:

var str:String? = "可选项"
if str != nil {
    print(str!)
}

4.可选项绑定

例子:

if let number = Int("123") {
    print(number)
}else {
    print("转换失败")
}

5.空合并运算符??

a??b ,a是可选项,b的存储类型和a相同,如果a为nil,则返回b,否则返回a。

例子:

let a: Int? = 1
let b: Int? = 2
if let c = a ?? b {
    print(c)
}
if let c = a, let d = b {
    print(c)
    print(d)
}

6.guard语句

当guard 语句为false,则执行大括号语句,true则跳过。

例子:

func test(abc:String?) {
    guard let abcd = abc else {
        return
    }
    print(abcd)
}

7.多重可选项

我们可以使用lldb指令 frame variable -R 来查看可选项的区别

例子:

var num1: Int? = 10
var num2: Int?? = num1
var num3: Int?? = 10

(lldb) frame variable -R num1
(Swift.Optional<Swift.Int>) num1 = some {
  some = {
    _value = 10
  }
}

(lldb) frame variable -R num2
(Swift.Optional<Swift.Optional<Swift.Int>>) num2 = some {
  some = some {
    some = {
      _value = 10
    }
  }
}

frame variable -R num3
(Swift.Optional<Swift.Optional<Swift.Int>>) num3 = some {
  some = some {
    some = {
      _value = 10
    }
  }
}


上一篇文章:swift从入门到精通04-枚举

下一篇文章:swift从入门到精通06-结构体和类