3.1Swift学习

作者: aven_kang | 来源:发表于2021-11-19 17:03 被阅读0次

    可选项

    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

    相关文章

      网友评论

        本文标题:3.1Swift学习

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