您是否应该能够在具有相同名称的不同文件中声明两个私有变量?

时间:2014-08-27 12:18:16

标签: swift

在Swift中,执行此操作是编译错误:

// file1.swift

private let testVar = 2

// file2.swift

private let testVar = 3

特别是,其中一个声明将突出显示' testVar'的无效重新声明。


documentation州通常认为:

  

私有访问将实体的使用限制在其自己的定义源文件中。使用私有访问隐藏特定功能的实现细节。

在讨论原始价值时,它说:

  

枚举定义中用于任何原始值或关联值的类型的访问级别必须至少与枚举的访问级别一样高。例如,您不能将私有类型用作具有内部访问级别的枚举的原始值类型。

关于常数:

  

常量,变量或属性不能比其类型更公开。例如,编写具有私有类型的公共属性是无效的。类似地,下标不能比其索引类型或返回类型更公开。


对我而言,这些摘录中没有一条表明您不应该在单独的文件中使用相同名称的private变量。

确实,第一句话告诉我你应该能够;否则,您将泄露实现细节(即,您使用了名为testVar的变量。)


在我提交错误报告之前,我想检查一下我是不是误解了语义。 这可能吗?

2 个答案:

答案 0 :(得分:2)

这已在Xcode 6.1 beta 2中修复:

  

Xcode 6.1 Beta中已解决的问题

     

Swift语言

     

如果在同一模块中的不同文件中定义,则具有相同名称和相同类型的私有实体将不再发生冲突。 (17632175)

答案 1 :(得分:0)

swift文档说明:

  

默认情况下,属于同一模块的每个源文件中的代码都可以访问在源文件顶层声明的变量,常量和其他命名声明。

您需要将文件放在不同的模块中,或者将变量放在类中。