我们如何用 Swift 编程语言定义以下术语:
- null
- nil
- Nil
- [NSNull null]
换句话说,每个 Objective-C 术语在 Swift 中的等效术语是什么。 此外,是否存在非 Objective-C 类型(如结构体和枚举)的特定用例。
关于等价物:
NULL
在Swift中没有等价物。nil
在Swift中也称为nil
。Nil
在Swift中没有等价物。[NSNull null]
可以在Swift中作为NSNull()访问。注意:这些是我根据阅读和尝试猜测的。欢迎纠正。
但是在Swift中,与Objective C不同,对于nil/NULL的处理方式非常不同。它看起来旨在强制执行安全和谨慎。请阅读手册中的可选项。一般来说,变量根本不能为NULL,在需要表示“没有值”的情况下,您可以通过声明来实现。
NULL
等效的最佳答案。 - Slipp D. Thompson如果您需要在低级指针操作中使用 NULL,请使用以下内容:
UnsafePointer<Int8>.null()
nil
表示“没有值”,但在其他方面与 Objective-C 中的 nil
完全不同。
它只能分配给可选变量。它适用于字面值和结构体(即它适用于基于堆栈的项目,而不仅仅是基于堆的项目)。
非可选变量不能被赋予 nil
,即使它们是类(即它们存储在堆上)。
所以,它明确不是一个空指针,也不类似于空指针。它之所以使用相同的名称,是因为它旨在用于相同的语义原因。
Swift的nil
与Objective-C中的nil
不同。
在Objective-C中,nil
是指向不存在对象的指针。在Swift中,nil
不是指针,而是某种类型的值的缺失。任何类型的可选项都可以被设置为nil
,不仅仅是对象类型。
NULL
在Swift中没有相应的等价物。
nil
在Swift中也被称为nil
Nil
在Swift中没有相应的等价物
[NSNull null]
可以在Swift中通过NSNull()
访问
enum Optional<T> {
case Some(T)
case None
}
这意味着在Swift中你不能有未初始化的变量/常量。如果你尝试这样做,你会得到一个编译器错误,说这个变量/常量不能被未初始化。你需要将它包装在Optional枚举中。
这是你在Swift中唯一会遇到的Null概念。
if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}