名称空间 – Swift的标准库和名称冲突

我知道Swift不使用名称空间,但是这些名称是在每个模块中定义的.首先,我不太清楚这是如何避免名称冲突的 – 可以随意详细说明.

不过,我的主要问题是:假设我想要一个不使用NSTreeNode的树结构,所以我创建了自己的名为“TreeNode”的类.现在让我们假设Apple决定在Swift的标准库中包含一个用于构建树的类,并且正如预期的那样,他们将其命名为“TreeNode”.那么会发生什么?我的自定义TreeNode将与标准库的TreeNode冲突……在这种情况下,我是否必须更改所有代码?或许Apple会承诺Swift的标准库将来不会改变?

编辑:问题回答here(感谢@Martin R的评论)

Swift中的命名空间是隐含的.所有类和其他符号都属于它们所定义的目标(模块).因此,如果定义类String,则完全限定名称为MyTarget.String.当存在名称冲突时,您必须在类名称加上它所定义的模块(框架),除非在当前模块中定义了具有该名称的类 – 此类优先且不需要前缀.
struct String {
    var swiftString = ""
}

var a = String()
var b = Swift.String()

因此,如果您创建了类TreeNode,Apple也会在以后添加TreeNode,如果您只使用一个模块而不需要更改任何内容,那么您的名称将优先.如果您想使用Swift的TreeNode,则需要将其称为Swift.TreeNode.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...