我在 swift 语言中随处可见,人们使用 if 语句测试可选值,以便他们可以通过两种方式安全地强制解包:
if optionalValue != .None {
... some code ...
}
或
if optionalValue != nil {
... some code ...
}
有什么区别,它会以某种方式影响我的应用程序/代码吗? 什么更好?
最佳答案
在正常使用中没有区别,它们可以互换。 .None
是 nil
的枚举表示Optional<T>
实现的(不存在)值枚举。
.None
的等效项和 nil
感谢Optional<T>
实现 NilLiteralConvertible
的类型协议(protocol),以及 !=
的重载和 ==
运营商。
如果您希望 nil 可赋值,您可以在自己的类/结构/枚举中实现该协议(protocol),例如:
struct MyStruct : NilLiteralConvertible {
static func convertFromNilLiteral() -> MyStruct {
return MyStruct() // <== here you should provide your own implementation
}
}
var t: MyStruct = nil
(注意变量没有声明为可选的)
关于ios - 测试 "nil"和 ".None"的可选值有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26363050/