我想快速了解Bool,
如果Bool是基本数据类型(原始),那么为什么bool默认值为nil
var test: Bool!
print(test) // nil
在java Bool中,默认值为false
答案 0 :(得分:11)
Bool
, Bool!
和 Bool?
在 Swift <中都有所不同/强>
1。 Bool
是非可选数据类型,其值可以为true/false
。您需要在初始化程序中初始化它或在使用它之前声明它。
var x : Bool = false
var x: Bool
init()
{
x = false
}
2。 Bool?
是可选数据类型,其值可以为nil/true/false
。要使用此类型,您需要使用if let or force unwrapping
打开它。
var x: Bool?
if let value = x
{
//TODO: use value instead of x
}
3。 Bool!
是隐式展开的可选数据类型,其值可以为nil/true/false
。这里的区别是它在使用之前必须包含一个值,否则它将导致runtime exception
。由于它是隐式展开的,因此无需使用if let or force unwrapping
打开它。
var x: Bool! //Must contain value before using
答案 1 :(得分:2)
严格地说,Swift中有没有默认值。
Bool
非可选,您必须指定(默认)值Bool
是可选而不是nil
- 就Swift而言无价值。答案 2 :(得分:0)
Bool
不一个原语。 Swift中的所有东西都是物体。您的变量test
是Bool!
,这是一个隐式展开的可选项,默认值为nil
。
如果您使用此代码(非可选),
var test: Bool
print(test)
您将收到错误消息:
变量&#39;测试&#39;在初始化之前使用
所以在Swift中你必须在使用之前初始化东西,例如:
var test: Bool = false