【发布时间】:2018-12-25 11:20:23
【问题描述】:
我以 Swift 开发应用程序为生。我喜欢这种语言,并尽可能地遵循它。然而,某些事实仍然漏掉了,无论是我瞎了眼,还是 Apple 对此保持沉默。
今天,我发现存在 Swift 3.3 和 3.4。我假设 3.2 是 3 的最后一个版本,用于迁移到 4、4.2 和 5。这种误解主要是由于 Swift.org、the official Git repo 和 Xcode Release Notes 没有完全提及。
所以,我认为这些也是过渡性的,但我不知道它们出现在什么 IDE 或编译器中,或者它们带有什么警告。下表总结了我的知识:
下表已过时,仅供参考,因此问题是有道理的。 I've posted an updated version of this table in an answer below.
紫色空间中的内容是什么?专门针对 3.3 和 3.4 行,但如果您知道其他行,那也会有所帮助!
权威来源也很棒。
主要问题的可能答案如下:
- Swift 3.3 仅在 Xcode 9.3 测试版中,从未公开; Swift 3.4 仅在 Xcode 9.3 - 9.4 中
- Swift 3.3 仅在 Xcode 9.3 中受支持; Xcode 9.3.1 和 9.4 支持 Swift 3.4
- Xcode 9.3 和 9.3.1 支持 Swift 3.3; Swift 3.4 仅在 Xcode 9.4 中受支持
- Xcode 版本 9.3 到 9.4 支持 Swift 3.3; Swift 3.4 仅在 Xcode 10 测试版中受支持。
我不认为还有另一种可能性。不过,如果我不在基地,请告诉我。
【问题讨论】:
-
您的图表令人愉快,但我不明白您为什么需要询问这个问题。确定某个版本的 Xcode 中包含哪个版本的 Swift 的方法当然是下载该版本的 Xcode 并查看。
-
值得注意的是,Swift 3.2、3.3 和 3.4 是伪版本——它们的存在仅代表分别在 Swift 3 兼容模式下运行的 Swift 4.0、4.1 和 4.2 编译器。 github.com/apple/swift-evolution/blob/master/proposals/… 中有一个方便的表格,将编译器映射到每种兼容模式的语言版本(请注意,5.0 和 5.1 的行不再准确,因为随着提案的实施而版本冲突停止了)。
-
“你有可以提取它的方法吗?”是的,我愿意。你也是。例如:hackingwithswift.com/example-code/language/… 编写一个小代码 sn-p 使用它来告诉你我们是在哪个 Swift 版本下编译的并不难。
-
编译器版本可以通过运行
xcrun swift --version获得(你可以使用xcode-select来选择命令行工具的版本,或者在Xcode的“位置”选项卡下的首选项中更改它)。 -
值得注意的是,维基百科有一个 Xcode 版本的 Swift 编译器版本表,这可能很有用:en.wikipedia.org/wiki/Xcode#Toolchain_versions
标签: swift xcode versioning