为什么没有可选(零)但只有零?

时间:2016-06-14 19:46:53

标签: swift null option

给出以下代码示例:

var ResponseCode: Int? = 404
print(ResponseCode) // --> Optional(404)
ResponseCode = nil
print(ResponseCode) // --> nil (why not Optional(nil)?)

问题:为什么当我打印一个零值选项时,它只是nil。为什么不显示Optional(nil)

感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:3)

因为nil是一个常量字面意思Option.None

允许可选项存储零值是没有意义的,并且会完全违背Optionals的目的(强制执行非可空性)。

答案 1 :(得分:3)

这很容易解释。 Optional是一个包含两个值的枚举:.Some(T).None

如您所见,其中只有一个参数。

.Some(T)的字符串说明为"Optional(description of T)".None没有参数,因此说明只是nil

请注意,您有时可以在日志中看到"Optional(nil)",但是,在这种情况下,我们正在处理双重选项(例如Int??)。

print(Optional<Int?>(Optional<Int>.None)) // prints "Optional(nil)"
相关问题