Ant*_*tzi 6 language-agnostic optional swift
在Swift中,我们操作的元素都有类型.
当我们使用这些类型时,我们可以添加一个' !',' ?'或者没有表达他们的可空性.
一个类型的装饰者?装饰师?接线员?别的什么?
这是一种新型吗?它是装饰类型吗?一种类型的变化?
swift编译器似乎将它们视为新类型,但我的问题不是实现或语言相关,因此我将其标记为语言不可知.
编辑:我正在寻找一个与语言无关的名字.我理解pranjalsatija的评论选项被定义为compound type.但是,这是一个语言实现细节.我可以将我的问题改为:
当使用类型定义时,您将具有特殊含义的字符称为什么,以及如何调用派生类型.
这个术语应该适用于红宝石中的资本套管常数,因为概念是相似的.
?在类型的末尾不是装饰者或操作员.它是硬编码在斯威夫特语法糖,让你缩短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 中的可选类型是完全不同的类型,而不是同一类型的变体。然而,对于开发人员来说,它们似乎是变体,因此我们将这样对待它们。这 ?和!目前还没有真正确定的、指定的名称,至少据我所知没有。从某种意义上说,您不应该将它们称为类型装饰器,因为选项本身就是真正的新类型。所以要回答你的问题, ? 和!是类型名称的一部分,比其他任何东西都重要。以及使用 ? 时创建的新类型 或一个!就是这样。一种全新的类型。