斯威夫特===没有

Tod*_*ham 14 swift

为什么以下内容在Swift中不起作用?

if someObject === nil {
}
Run Code Online (Sandbox Code Playgroud)

你必须使用==运算符进行测试,例如

if someObject == nil {
}
Run Code Online (Sandbox Code Playgroud)

我认为===更像是确保实例完全相同(基本上比较指针)和==更像是一个isEqual检查.因此我认为===更适合测试nil,但我显然是不正确的.

文件说明:

===或"与...相同"意味着类类型的两个常量或变量引用完全相同的类实例.

==或"等于"意味着两个实例的值被认为是"相等"或"等价",对于某些适当的"相等"含义,由类型的设计者定义."

Ale*_*yne 18

它的工作方式与预期完全一致

var s: String? = nil
s === nil // true
Run Code Online (Sandbox Code Playgroud)

唯一需要注意的是,要比较nil,您的变量必须能够 nil.这意味着它必须是可选的,用a表示?.

var s: String不允许有nil,所以会因此总是返回false===相比nil.

  • 还有一个警告 - 它必须是类类型的可选项.例如,不是"Int?". (5认同)