null / nil快速语言


71

我们如何用快速编程语言定义以下内容:

  • 空值
  • [NSNull null]

换句话说,这些目标c项中的每一个的等效项将是什么。此外,还想知道是否存在针对非目标c类型(如结构和枚举)的任何特定用例。提前致谢。


标记的问题是关于“可能缺少值”的,而我对这些值的不同类型/变体感兴趣。相关,但不重复。
Mehul Parmar 2014年

1
您会发现它们是同一个人。
CrimsonChris 2014年

Answers:


124

关于等效项:

  • NULL 在Swift中没有等效功能。
  • nilnil在Swift中也称为
  • Nil 在Swift中没有等效项
  • [NSNull null] 可以在Swift中作为NSNull()访问

注意:这些是我基于阅读和游戏的猜测。欢迎更正。

但是Swift中的nil / NULL处理与Objective C有很大的不同。它看起来旨在加强安全性和谨慎性。阅读手册中的可选件。通常来说,变量根本不能为NULL,而当您需要表示“缺少值”时,您可以声明性地做到这一点。


您将如何宣布缺乏价值来检查?像==零的Objective-c
Juan Boero

@JuanPabloBoero请参阅下面的回复
Ciprian

2
Obj-C中的NULL表示“与平原C一起使用的零指针”。由于Swift与C库兼容,因此以下@Rien的答案是我所知道的最佳答案NULL
Slipp D. Thompson

21

如果需要在低级指针操作中使用NULL,请使用以下命令:

UnsafePointer<Int8>.null()

13

nil表示“无价值”,但与Objective-C完全不同nil

它只能分配给可选变量。它同时适用于文字和结构(即,它适用于基于堆栈的项目,而不仅仅是基于堆的项目)。

非可选变量nil即使是类也不能分配(即它们存在于堆中)。

因此,它显然不是NULL指针,也不类似于一个指针。之所以共享该名称,是因为出于相同的语义原因,将使用该名称。


6

SwiftnilnilObjective-C中的不一样。
在Objective-C中,nil是指向不存在对象的指针。在Swift中,nil它不是指针,而是缺少某种类型的值。可以将任何类型的Optionals设置为nil,而不仅仅是对象类型。

  • NULL 在Swift中没有等效功能。

  • nil 在Swift中也称为nil

  • Nil 在Swift中没有等效项

  • [NSNull null] 可以在Swift中以 NSNull()


5

Swift中的Null概念恢复到Optional枚举。枚举是这样定义的

enum Optional<T> {
  case Some(T)
  case None
}

这意味着您在Swift中不能有未初始化的变量/常量。您需要将其包装在Optional枚举中。

这是您在Swift中会发现的唯一Null概念


0
if !(myDATA is NSNull) {
// optional is NOT NULL, neither NIL nor NSNull
} else {
// null
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.