gpt4 book ai didi

swift - 在 Swift 中使用或不使用 "!"有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 00:18:34 24 4
gpt4 key购买 nike

!标记用于Swift中的可选值提取其包装值,但不使用!也可以提取值:

var optionalString: String? = "optionalString"
println(optionalString)

另一个使用 ! 的例子:

var optionalString: String? = "optionalString"
println(optionalString!)

上面的代码都得到了正确的值,所以我想知道使用和不使用 有什么区别!,如果可选值为 nil 或其他,它是否只是为了在运行时检测错误?提前致谢。

最佳答案

正如其他人已经指出的那样,真正好的起点是官方文档。文档非常详细地介绍了这个主题。

来自官方文档:

Trying to use ! to access a non-existent optional value triggers a runtime error. Always make sure that an optional contains a non-nil value before using ! to force-unwrap its value.

println() 可能不是测试 ! 运算符如何工作的最佳方式。没有它,println() 要么打印值要么打印 nil,有了它它要么打印值要么崩溃。

主要区别在于当我们尝试将可选值分配给另一个值或在函数的参数中使用它时。

假设 optionalValue 是一个可选的整数。

let actualValue = optionalValue

使用此赋值,actualValue 现在只是另一个可选整数。我们根本没有解开值(value)。我们有一个可选的而不是一个整数。

与此同时,

let actualValue = optionalValue!

现在我们强制展开。实际值将是一个整数而不是一个可选的整数。但是,此代码会导致运行时异常是 optionalValue is nil。

关于swift - 在 Swift 中使用或不使用 "!"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24230427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com