Swift 中 ? 和 ! 的区别是什么?

· 约 2 分钟读完 · 第 10 / 196 章

推荐答案

在 Swift 中,? 和 ! 都与可选类型(Optional)相关,但它们的使用场景和含义有所不同。

  • ? 用于声明一个可选类型的变量或常量,表示该变量或常量可以包含一个值,也可以为 nil。
  • ! 用于强制解包(Force Unwrapping)一个可选类型的值,表示你确定该可选值不为 nil,如果为 nil 则会触发运行时错误。

本题详细解读

1. ? 的使用

在 Swift 中,? 用于声明一个可选类型的变量或常量。可选类型表示该变量或常量可以包含一个值,也可以为 nil。例如:

在这个例子中,optionalString 是一个可选类型的字符串,它可以包含一个字符串值,也可以为 nil。

2. ! 的使用

! 用于强制解包一个可选类型的值。当你确定一个可选值不为 nil 时,可以使用 ! 来解包并获取其实际值。例如:

在这个例子中,optionalString! 表示强制解包 optionalString,并将其值赋给 unwrappedString。如果 optionalString 为 nil,则会触发运行时错误。

3. 使用场景

  • ? 的使用场景:当你声明一个变量或常量,但不确定它是否会有值时,使用 ? 来声明它为可选类型。
  • ! 的使用场景:当你确定一个可选值不为 nil 时,可以使用 ! 来强制解包。但要注意,如果该值为 nil,程序会崩溃,因此在使用 ! 时要非常小心。

4. 示例代码

在这个示例中,optionalInt 是一个可选类型的整数。我们首先检查它是否为 nil,如果不是 nil,则使用 ! 强制解包并打印其值。如果为 nil,则打印提示信息。