Swift中同名私有与公有结构体如何分别访问?
如何在嵌套私有结构体的类中访问全局同名结构体的属性?
因为你的ABC类内部定义了私有结构体A,在something()方法里直接写A会优先匹配这个本地私有类型,所以要访问全局的A,需要明确指定它的模块命名空间。
解决方案
在Swift中,通过「模块名 + 类型名」的方式就能精准定位到全局的A结构体:
class ABC { private struct A { static let local = "local name" } func something() { // 把YourModuleName替换成你的项目/模块实际名称 let globalName = YourModuleName.A.name print(globalName) // 输出 "Name" } }
补充说明
- 模块名默认就是你的项目Target名称(可在Xcode项目设置里查看)
- 如果代码属于默认主模块,直接用项目名称就能访问全局定义的
A结构体,这样编译器就不会和类内部的私有A混淆。
内容的提问来源于stack exchange,提问作者Saranjith
相关产品推荐
相关产品推荐

