Swift或其他语言的Optionals术语

Ant*_*tzi 6 language-agnostic optional swift

在Swift中,我们操作的元素都有类型.

当我们使用这些类型时,我们可以添加一个' !',' '或者没有表达他们的可空性.

  1. 我怎么称呼' '或' !'用来表达这个特质?

一个类型的装饰者?装饰师?接线员?别的什么?

  1. 在使用此字符时,我应该将所谓的类型称为什么?

这是一种新型吗?它是装饰类型吗?一种类型的变化?

swift编译器似乎将它们视为新类型,但我的问题不是实现或语言相关,因此我将其标记为语言不可知.

编辑:我正在寻找一个与语言无关的名字.我理解pranjalsatija的评论选项被定义为compound type.但是,这是一个语言实现细节.我可以将我的问题改为:

当使用类型定义时,您将具有特殊含义的字符称为什么,以及如何调用派生类型.

这个术语应该适用于红宝石中的资本套管常数,因为概念是相似的.

Air*_*ity 7

?在类型的末尾不是装饰者或操作员.它是硬编码在斯威夫特语法糖,让你缩短Optional<Thing>Thing?.

?并没有真正有一个名称(至少我从来没有听说过的雨燕车队任何人使用一个),语言参考它只是描述为"后缀?".语言语法不会将其置于语法范畴中.

同样,[Thing]是简写Array<Thing>,但在此上下文中没有方括号的名称.

将其描述Option<Int>为"衍生自" Int将是滥用"衍生"一词.如果你想将它描述为" Optional专门用于Int",你可以.

实际上,您可能正在寻找与语言无关的术语,以了解Swift如何允许您构建适用于任何类型的类型(如Optional<T>Array<T>)T而无需关心T实际情况.在这种情况下,该术语可能是泛型.

!有点不同.当应用于类型名称时Thing!,它的缩写形式与之ImplicitlyUnwrappedOptional<Thing>相同?.

!当应用于类型的变量Thing?等同于测试可选的后缀运算符时,如果它是nil,则终止程序,如下所示:

postfix operator !<T>(value: T?) -> T {
    if let unwrapped = value {
        return unwrapped
    }
    else {
       fatalError("unexpectedly found nil while unwrapping an Optional value")
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,!可以描述为运营商.但不是在第一个背景下.

对于给定语言用于描述选项的术语,请参阅选项类型维基百科页面.


小智 0

从技术上讲,Swift 中的可选类型是完全不同的类型,而不是同一类型的变体。然而,对于开发人员来说,它们似乎是变体,因此我们将这样对待它们。这 ?和!目前还没有真正确定的、指定的名称,至少据我所知没有。从某种意义上说,您不应该将它们称为类型装饰器,因为选项本身就是真正的新类型。所以要回答你的问题, ? 和!是类型名称的一部分,比其他任何东西都重要。以及使用 ? 时创建的新类型 或一个!就是这样。一种全新的类型。