美文网首页
关于Swift 参数可选和必选的区别

关于Swift 参数可选和必选的区别

作者: WMSmile | 来源:发表于2019-08-23 15:50 被阅读0次

    关于Swift 参数可选和必选的区别
    很多小伙伴会遇到这样的问题


    在这里插入图片描述

    意思就是,你必须给我确定的类型String 不能为空, 'nil' cannot be assigned to type 'String'。

    参数

    var str001:String
    var str002:String?
    
    str001 = nil //这个是报错的是 'nil' cannot be assigned to type 'String'
    str002 = nil
    
    str001 = "str001"
    str002 = "str002"
    

    方法

    let string:String? = nil
    //参数 可选
    func add(str:String?){
        
    }
    //参数 必选
    func add1(str:String){
        
    }
    
    add(str: string)
    add1(str: string ?? "") 
    

    add 方法是你给我字符串和空都可以
    add1方法是你给我必须是字符串类型

    附录:我朋友(panway)的理解

    如果你不确定是不是为空,就用??给个默认值

    var filePath : String = self.item?.href ?? ""
    
    

    如果你100%确定self.item有值,那么你可以用!(force unwrap self.item)

    var filePath : String = self.item!.href
    
    

    我一开始好奇为什么filePath不能为空,OC时代为空代码可以继续啊,结果发现filePath可以为空:

    var filePath : String? = self.item?.href
    
    

    这样是可以,但是下面用到 filePath 的时候(比如filePath是某个方法的参数,但是这个方法不需要你这个“可能为空可能不为空”的玩意,人家要100%非空的),所以编译器还是会给你报错,让你处理成非空的值传进去,所以老哥,早晚都要做的事情,还是提前做了吧

    相关文章

      网友评论

          本文标题:关于Swift 参数可选和必选的区别

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