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

为什么要创建“隐式展开的可选项”,因为这意味着您知道存在价值?

陆高峰
2023-03-14
问题内容

为什么只创建一个正则变量或常量而不是创建一个“隐式展开的可选”?如果您知道可以成功解包,那么为什么首先要创建一个可选的?例如,为什么这样:

let someString: String! = "this is the string"

比以下内容更有用:

let someString: String = "this is the string"

如果“可选参数指示允许常量或变量具有’无值’”,但“有时从程序的结构中可以看出,可选参数在首次设置该值后将始终具有一个值”,这是什么意思呢?首先使它成为可选项?如果您知道可选值总是会有一个值,那不是使它成为非可选值吗?


问题答案:

考虑一个对象的情况,该对象在构造和配置时可能具有nil属性,但是此后是不可变的且非nil(NSImage通常被用这种方式处理,尽管在这种情况下,有时仍然有用)。隐式解开的可选对象将清理其代码,并且安全损失相对较低(只要持有一个保证,它将是安全的)。

(编辑)不过要清楚:常规的可选几乎总是首选。



 类似资料:
  • 请原谅我的无知,我恐怕错过了一些基本的选项理解。我的印象是(隐式展开的可选指示符)保证该类型的变量不为零。然而,这个非常简单的Apple API很少会返回我。 这是一个意外的错误还是Optionals规范的一部分?因为如果这是规范的一部分,我不明白为什么会有选项,而不是变量可以存在或。

  • 我想创建一个

  • 例如,我有这样的类,而不是在方法中指定字段,我只想隐式地打开选项。 我理解这样做的原因是,当我声明它们时,它们的初始值为,因此我不需要,因为所有类的字段都有初始值。我所需要做的就是确保在尝试访问它们之前为它们分配了一些内容,否则会出现致命错误。 假设我们给这些字段赋值,现在我们用某种方法,我想问的是:为什么我们需要在一个条件函数中使用bool来强制展开它?我可以访问其他隐式展开的选项,甚至是boo

  • 问题内容: 我了解这是用来创建别名的。因此,将一个长名称别名为一个短名称是有意义的。但是,我看到一个查询 ,这意味着什么? 问题答案: 可以以多种方式使用别名,而不仅仅是缩短长列名。 在这种情况下,您的示例意味着您将返回一列始终包含的列,并且其别名/列名称为。 当您使用计算值(例如)时,也可以使用别名。