在Swift中,下划线“_”代表什么意思?

4

我在浏览Swift模块头文件时发现了这个:

protocol _ObjectiveCBridgeable {

同样地:
protocol _SequenceType {

作为一名Objective-C背景下的开发者,这看起来对我来说非常不寻常。下划线_通常意味着相关实体是私有的,并且通常在头文件中被隐藏。为什么Swift中它们是公开可见的?Swift的命名约定发生了变化吗?

2个回答

3

看起来在Swift方面,惯例已经发生了变化,以下内容可以证明:

/// This protocol is an implementation detail of `SequenceType`; do
/// not use it directly.
///
/// Its requirements are inherited by `SequenceType` and thus must
/// be satisfied by types conforming to that protocol.
protocol _SequenceType {
}

正如您所看到的,下划线_现在似乎意味着相关实体是其逻辑子级的“实现细节”。

2

我相信(Swift开发团队在论坛上已经声明)目前Swift存在特定限制,这迫使他们针对各种协议进行两部分声明。可以推测,最终这些限制将消失,方法将迁移到非下划线版本中。只要您始终仅使用非下划线版本,当此情况发生时,您的代码应该能够重新编译,因此出于这个原因,您永远不应直接实现_版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接