在雨燕,它是一个编译错误,要做到这一点:你应该能够在具有相同名称的不同文件中声明两个私有变量吗?
// file1.swift
private let testVar = 2
// file2.swift
private let testVar = 3
特别是,声明人会用“的testvar的无效重复声明”强调。
的documentation状态,一般认为:
私人接入限制使用的实体自身的定义源文件。使用私人访问来隐藏特定功能的实现细节。
在讨论原始值,它说:
在枚举定义用于任何原始值或相关值类型必须具有的访问级别至少高达枚举的访问级别。例如,不能将私有类型用作具有内部访问级别的枚举的原始值类型。
并相对于常量:
常量,变量或属性不能比它的类型的详细公开。例如,编写具有私有类型的公共属性是无效的。同样,下标不能比其索引类型或返回类型更公开。
对我来说,没有这些提取物的建议,你不应该能够有private
变量在不同的文件相同的名称。
的确,第一句话对我说,你应该能够;否则,您正在泄漏实现细节(即,您使用名为testVar
的变量)。
在我提交错误报告之前,我想检查一下,我没有误解语义。 这应该可能吗?
似乎这个裹尸布是不允许的。只是在一个不同的文件是不够的。考虑链接时间。 – zaph 2014-08-27 12:27:56
@Zaph我认为它的工作方式与C中的静态变量相同(即不暴露给链接器)。看起来很奇怪,你可以通过向项目添加一个新文件来打破你的构建! – sapi 2014-08-27 12:43:37
我想这涉及私人处理。提交bug并查看响应是什么。 – zaph 2014-08-27 12:49:11