Any
作为标准协议(Swift 2.2)到......?在Swift 3.0之前,Any
被描述为“所有类型隐式符合的协议。”,并在标准库中实现为a typealias
for protocol<>
:
typealias Any = protocol<>
所有类型都隐式符合的协议。
从Swift 3.0开始,它的用法和含义似乎没有变化,但我再也找不到 - 在Swift中流畅变化的语言参考 - 任何明确的参考。
Any
在哪里声明/实现,以及在哪里记录? 答案 0 :(得分:1)
Any
已从标准库中删除,现在是关键字/内置类型在实施Swift演化提案时
对于Swift 3,Any
已从Swift标准库中删除,并成为关键字/内置类型。它的含义和行为保持不变。
引用上述进化建议:
现有的
Any
typealias,代表符合的所有类型 对于零个或多个协议(即所有类型),将成为关键字。 它的意义不会改变。
引用CHANGELOG.md
的{{1}}中的更新:
以前定义了空协议组合
Any
类型 正如protocol<>
。 这已从标准中删除 库和Any
现在是具有相同行为的关键字。
在the commit associated with removing the Any
typealias from the Standard Library中,我们可以发现从标准库迁移Any
并将其更改为内置关键字的更改。
[SE-0095]“
&
”组合语法的初始解析实现 此提交定义了“Any
”关键字,实现了解析 使用中缀“&
”编写类型,并提供要转换的修订 “protocol<>
”...
<强>
include/swift/AST/ASTContext.h:
强>// Builtin type and simple types that are used frequently. ... + const CanType TheAnyType; /// This is 'Any', the empty protocol composition
<强>
include/swift/AST/KnownIdentifiers.def:
强>... IDENTIFIER(Self) + IDENTIFIER(Any)
除了描述此迁移的各种更改日志之外,现在可以在another prior commit related to implementing SE-0095中找到Any
作为关键字的文档:
关键字和标点符号
...
- 表达式和类型中使用的关键字:
as
,Any
,catch
,...
同样,巧妙地,在the Language Reference - Lexical Structure的主要语法描述中:
类型语法
...
type - &gt;元类型型
类型 - &gt;
Any
类型 - &gt;
Self
...
最后,和以前一样,(虽然现在是关键字/非stdlib类型)Any
仍被简单地描述为可用于表示任何类型的特殊类型。引用the Language Reference - Types:
为
输入类型Any
和AnyObject
Swift提供了两种特殊类型来处理非特定类型:
Any
可以表示任何类型的实例,包括函数 类型。...