Swift学习笔记

3.1Swift学习

2021-11-19  本文已影响0人  aven_kang

可选项

1.可选项,一般也叫可选类型,它允许将值设置为nil
2.在类型名称后面加个问号?,来定义一个可选类型

var name:String? = "Jack"
name = nil

var age:Int?
age = 10
age = nil

var array = [1,15,40,29]
func get(_ index:Int)->Int? {

  if index < 0 || index >= array.count {
            return nil
      }
  return array[index]
}

print(get(1)) // Optional(15)
print(get(-1)) // nil

强制解包

截屏2021-10-21 下午3.12.53.png 截屏2021-10-21 下午3.13.14.png

在上面两个例子中,age是可选类型,不管你是否初始化了,在对这个数据进行使用的时候,必须先解包,才能使用,否则会报错


截屏2021-10-21 下午3.14.58.png

可选项绑定(Optional Binding)

1.可以使用可选项绑定来判断可选项是否包含值

2.如果包含就自动解包,把值赋值给一个临时的常量(let)或者变量(var),并返回true,否则返回false

截屏2021-10-21 下午3.26.34.png

while循环中使用可选项绑定

var str = ["10","20","abc","-20","30"]
var index = 0
var sum = 0
while let num = Int(strs[index]),num >0 {
    sum += num
    index += 1
}
print(sum) // 30

空合并运算符 ??

截屏2021-10-21 下午3.39.13.png
截屏2021-10-21 下午3.43.20.png

多个 ?? 一起使用

截屏2021-10-21 下午3.46.10.png

??跟if let配合使用

let a:Int? = nil
let b:Int? = 2
if let c = a ?? b {
  print(c)
}
// 类似if a! = nil || b != nil

if let c = a, let d = b {
  print(c)
  print(d)
}
// 类似 if a != nil && b != nil

可选项绑定案例

 func login(_ info:[String:String]) {
        
        let username: String
        if let tmp = info["username"] {
            username = tmp;
        }else {
            print("请输入用户名")
            return
        }
        
        let password:String
        if let tmp = info["password"] {
            password = tmp
        }else {
            print("请输入密码")
            return
        }
        
        print("\(username),\(password)")
    }
这个是使用可选项绑定的一个使用案例,充斥着if/else

现在介绍一个guard语句,比起可选项绑定会好用一点,简洁一点

1.当guard语句的条件为false时,就会执行大括号里面的代码

2.当gurad语句的条件为true时,就会跳过guard语句

3.gurad语句特别适合用来“提前退出”

guard 条件 else {
  // do something
    退出当前作用域
    // return\break\continue\throw error
}
 func login2(_ info:[String:String]) {
        guard let username = info["username"] else {
            print("请输入用户名")
            return
        }
        guard let password = info["password"] else {
            print("请输入密码")
            return
        }
        print("\(username),\(password)")
    }

在上面这段代码中,可以看出比可选项绑定的方法简单很多,轻松实现功能

隐式解包

截屏2021-10-21 下午4.44.50.png
上一篇 下一篇

猜你喜欢

热点阅读