Swift_符号表达式(【Int? = optional Int】、【as\as!\as?】、nil 代表值为nil非空、?可以选链..... )

本文深入探讨了Swift编程中可选链的作用,包括`Int?`类型的使用,`as`关键字的三种形式——`as`, `as!`, `as?`,以及`nil`在可选类型的含义。通过实例解析,阐述了如何利用可选链进行安全的成员访问,并解释了`?`符号在选择链操作中的关键角色。" 112523960,10548756,2019阿里技术面试题大全:DataX与面试技巧,"['数据结构', '算法', '数据库理论', '网络', '代码管理工具']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

func symbolAp(){
    
        //Int? 相当于 optional int 可选类型
        //一般用于类型转换可能会失败,例如 字符串 sss  转 int
        let sym:Int? = 1
        let sym2:Float? = Float("11.3")  //sym2 = 11.3
        let sym3:Float? = Float("as.v")  // sym3 = nil

        
        if sym2 != nil {   //sym2的值为 nil ,而不是Object-C 的空指针
            print("sym2 = \((String(format:"%.2f",sym2!))) \n")
        }
        
        if sym3 == nil {
            print("sym3 = nil,转换失败\n")
        }
        
        
        //as as! as?
        /*as  类型转换 从派生类转换为基类,向上转型(upcasts)*/
        let asNum = 10 as Int
        var asNum2 = 19.11 as Float
        var asNum3 = 19.11 as Float

        /*as! 强转    向下转型(Downcasting)时使用。由于是强制类型转换,如果转换失败会报 runtime 运行错误*/
        let asNum4 = "19.11" as! Float  //报错


        
        /*as? as? 和 as! 操作符的转换规则完全一样。但 as? 如果转换不成功的时候便会返回一个 nil 对象。成功的话返回可选类型值 /(optional),需要我们拆包使用。
              由于 as? 在转换失败的时候也不会出现错误,所以对于如果能确保100%会成功的转换则可使用 as!,否则使用 as?*/
        let asNum6 = "19.11" as? Int   //因为非强转,所以失败返回nil值

        
    }

?可选链

class Apple {

    var num:Int = 3
}


class Fruit {
    
    var apple:Apple?
    
}
//?可以选链
    /*
     如果你访问的值不是可选的,可选链式调用将会返回可选值。
     如果你访问的值就是可选的,可选链式调用不会让可选返回值变得“更可选”。
     因此:
     
     通过可选链式调用访问一个Int值,将会返回Int?,无论使用了多少层可选链式调用。
     类似的,通过可选链式调用访问Int?值,依旧会返回Int?值,并不会返回Int??。
     */
    func canType (){
        
        var fruit = Fruit()
        let t = fruit.apple?.num //?可选,允许返回nil值
//        let b = fruit.apple!.num //!强制打开,如果nil 运行时报错 fatal error: unexpectedly found nil while unwrapping an Optional value

        //实例 赋值
        fruit.apple = Apple()
        let c = fruit.apple!.num //c=3 这样实例后 强行打开也不会报错
        
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值