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

2019-08-23  本文已影响0人  WMSmile

关于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%非空的),所以编译器还是会给你报错,让你处理成非空的值传进去,所以老哥,早晚都要做的事情,还是提前做了吧

上一篇下一篇

猜你喜欢

热点阅读