当前位置: 首页 > 面试题库 >

您如何解开Swift可选项?

符俊材
2023-03-14
问题内容

您如何正确地拆开普通选项和隐式选项?

这个主题似乎有些混乱,我只想对所有方法以及它们如何有用提供参考。

当前有两种创建可选项的方法:

var optionalString: String?

var implicitOptionalString: String!

有两种解开包装的方式吗?另外,使用!?展开过程之间有什么区别?


问题答案:

有很多相似之处,只有少数区别。

(常规)可选

  • 宣言: var opt: Type?

  • 不安全地展开: let x = opt!.property // error if opt is nil

  • 安全地测试存在: if opt != nil { ... someFunc(opt!) ... } // no error

  • 通过绑定安全地展开: if let x = opt { ... someFunc(x) ... } // no error

  • 安全链接: var x = opt?.property // x is also Optional, by extension

  • 安全合并零值: var x = opt ?? nonOpt

隐式展开的可选

  • 宣言: var opt: Type!

  • 不安全地展开(隐式): let x = opt.property // error if opt is nil

    • 通过分配不安全地展开:
      let nonOpt: Type = opt // error if opt is nil

    • 通过参数传递不安全地展开:
      func someFunc(nonOpt: Type) ... someFunc(opt) // error if opt is nil

  • 安全地测试存在: if opt != nil { ... someFunc(opt) ... } // no error

  • 安全链接: var x = opt?.property // x is also Optional, by extension

  • 安全合并零值: var x = opt ?? nonOpt



 类似资料:
  • 问题内容: 如何解开返回为以下内容的字符串: (可选(可选“蓝色”)) cityLabelName打印为 问题答案: 给定一个double可选,如以下双重包装: @Leo 表明您可以使用 可选绑定 两次: 或强制解开两次: 您可以使用以下5种方法来安全解开double可选: 方法1: 您还可以使用 模式匹配 : 正如@netigger在回答中指出的那样,它也可以写成: 简洁性虽然较差,但较容易阅读

  • 问题内容: 给定的数组具有可选和非可选值的混合,例如: 我们怎样才能提取的值的类型(如果有的话),所以我们可以创建一个通用的打印功能,仅打印出的值。 例如,此printArray函数通过并打印每个元素: 将输出: 我们如何更改它,以便它仅打印基础值,以便在“可选”时解开该值?例如: 更新进度… 将参数更改为时,它可以工作,例如: 这将打印所需的: 但是仍然想看看我们如何解开Optional,因为返

  • 问题内容: 快速使用以下语法进行流控制 在这种情况下 ,真值上下文的语义是什么 ? 是否允许 表达式链接 (如下所示)? 如果是这样,布尔表达式是否会短路? 问题答案: 首先检查它是否为零或是否有数据。如果为零,则不会执行if语句。如果有数据,则将数据解包并分配给if语句的范围。然后执行括号内的代码。 无法在一个if语句中链接此功能。不直接评估为布尔值。最好将“ if let”视为一个特殊关键字。

  • 可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能为nil。 可选链返回两个值: 如果目标有值,调用就会成功,返回该值 如果目标为nil,调用将返回nil 多次请求或调用可以被链接成一个链,如果任意一个节点为nil将导致整条链失效。 可选链可替代强制解析 通过在属性、方法、或下标脚本的可选值后面放一个问号(?),即可定义一个可选链。

  • 本文向大家介绍swift 可选型的使用详解,包括了swift 可选型的使用详解的使用技巧和注意事项,需要的朋友参考一下  一、基本用法 可选性是Swift提供的一个特殊类型,它为我们编写程序提供便利的条件 swift是强类型语言,当我们需要使用一个变量,既可以为String,也可以为nil时,这时候就需要我们使用可选型。 二、可选型解包使用 三、多层解包(**swift3.0有变化) 四、Opti

  • 问题内容: 假设我们定义了一个可选数组: 我可以在短时间内强行打开包装: 但这会使应用程序崩溃,是否还有其他短途方法(无需显式展开)如何展开可选数组? 问题答案: 此解决方案将为您提供一个新数组,其中所有值均已解包且所有nil均被滤除。 Swift 4.1: Swift 2.0: Swift 1.0: