swift中基本bool的默认值是多少?

Gau*_*ini 6 boolean swift

我想在swift中了解Bool,如果Bool是基本数据类型(原始),那么为什么bool默认值为 nil

var test: Bool!
print(test) // nil
Run Code Online (Sandbox Code Playgroud)

在java Bool中,默认值为false

在此输入图像描述

java中布尔值的默认值

PGD*_*Dev 13

Bool,Bool!并且Bool?都是在不同的斯威夫特.

1. Bool是一个非可选的数据类型,可以有值 - true/false.您需要在初始化程序中初始化它或在使用它之前声明它.

var x : Bool = false

var x: Bool
init()
{
   x = false
}
Run Code Online (Sandbox Code Playgroud)

2. Bool?是一个可选的数据类型,可以有值 - nil/true/false.要使用此类型,您需要使用它来打开它if let or force unwrapping.

var x: Bool?

if let value = x
{
   //TODO: use value instead of x
}
Run Code Online (Sandbox Code Playgroud)

3. Bool!是一个隐式解包的可选数据类型,可以有值 - nil/true/false.这里的区别是它必须包含一个值才能使用它,否则它将导致runtime exception.由于它是隐式展开的,因此无需使用它进行展开if let or force unwrapping.

var x: Bool! //Must contain value before using
Run Code Online (Sandbox Code Playgroud)

  • "*一个隐式展开的可选[...]它必须在使用之前包含一个值,否则它将导致运行时异常*" - 实际上自Swift 3以来,该行真的模糊了; 如果IUO可以作为强选项进行类型检查,那么它将是.例如,`var x:Bool!; print("\(x)")`不会崩溃; 它只会输出`nil`. (3认同)