Swift函数中如何正确检查可选参数?
关于Swift可选Bool参数的简洁写法
你的写法本身能正常运行,但存在冗余,而且有更贴合Swift风格的简洁实现方式,下面给你拆解说明:
1. 原写法的冗余问题
你写的if sample != nil, sample == true里,sample != nil完全是多余的——因为当sample为nil时,sample == true的结果本身就是false,所以整个条件等价于直接判断sample == true,没必要多做一次非空检查。
2. 更简洁的两种写法
写法一:直接判断可选值是否为true
func collectBuffers(sample: Bool?) { // ... if sample == true { // 仅当sample为true时执行的逻辑 } }
这种写法最简洁,完全覆盖你原条件的逻辑:只有当sample被赋值为true时才进入分支,nil或false都不会触发。
写法二:可选绑定+布尔判断(适合需要使用解包后值的场景)
如果后续逻辑需要用到解包后的布尔值,用可选绑定的可读性更强:
func collectBuffers(sample: Bool?) { // ... if let sampleValue = sample, sampleValue { // 这里可直接使用非可选的sampleValue } }
这种写法先确保sample不为nil,再判断其值是否为true,避免了后续操作中处理可选值的麻烦。
额外建议:给可选参数加默认值
如果函数的大部分调用场景不需要传递sample参数,可以给它设置默认值,让调用更便捷:
func collectBuffers(sample: Bool? = nil) { // ... } // 调用时可直接写 collectBuffers(),无需传sample参数
内容的提问来源于stack exchange,提问作者Bartender1382
相关产品推荐
相关产品推荐

