Swift中的下划线“_”是什么意思?

时间:2015-02-06 12:46:11

标签: swift module naming-conventions header-files naming

我在浏览Swift模块标题时发现了这一点:

protocol _ObjectiveCBridgeable {

类似地:

protocol _SequenceType {

来自Objective-C背景,这对我来说似乎非常传统。下划线_通常意味着相关实体是私有的,并且通常在标题可见性方面隐藏。为什么在Swift中它们是公开可见的?是否为Swift更改了命名约定?

2 个答案:

答案 0 :(得分: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 {
}

正如您所看到的,下划线_现在似乎暗示相关实体是一个实施细节'它的逻辑孩子。

答案 1 :(得分:2)

我相信(Swift开发团队已经在论坛上说过),目前Swift存在特定限制,迫使他们为各种协议做两部分声明。据推测,最终这些将消失,方法将迁移到非下划线版本。只要您只使用非下划线的代码,您的代码应该在发生这种情况时重新编译,因此您不应该直接实现_版本。