如何检查 Playground 的 swift 版本?

Posted

技术标签:

【中文标题】如何检查 Playground 的 swift 版本?【英文标题】:How to check, swift version for Playground? 【发布时间】:2018-08-22 13:12:35 【问题描述】:

我只是在 playground (xcode-8.2) 中使用 swift 教程测试我的代码。我遇到了以下示例代码:

One-Sided Ranges

for name in names[2...] 
    print(name)

现在我的操场出现错误:

现在我觉得我的 swift 版本可能不支持此代码!

我查看了这个答案,但它只为 Xcode 项目提供了解决方案。

How do I see which version of Swift I'm using?

如何查看快速版的游乐场?

【问题讨论】:

Xcode 9 - 斯威夫特 4。Xcode 8 - 斯威夫特 3。 @rmaddy - 对我来说似乎是一个问题,Xcode 8.2 支持 Swift 2.0 到 3.2(大约)。我们如何确保 Playground 支持 3.0 而不是其他。我该如何检查它。 @Krunal 我使用 Xcode 8 已经太久了,而且我从未使用过 Swift 2。但是 Swift 2 和 3 之间的 API 完全不同。尝试使用任何 Swift 3 语法。更好的是,获取最新信息。使用 Xcode 9.2 并使用 Swift 4。没有人应该再使用 Swift 2。这是历史。 @rmaddy 是的,我也使用 Xcode 9.2+,一个简单的问题是,一个 Xcode 工具支持多个版本的 Swift 语言。我们如何确保 Playground 支持哪个特定版本的 Swift 语言。默认情况下,它是否支持该特定 Xcode 工具的最新版本? Apple 文档目前适用于 Swift 4。names[2...] 是 Swift 4。只有 Xcode 9.x 支持 Swift 4 Playground。目前,不,您不能选择:playground 仅兼容与 Xcode 捆绑的最新稳定 Swift 版本。即:Xcode 9.3 将在 Swift 4.1 中有操场。 【参考方案1】:

尝试使用以下代码找出 swift 版本。 (在这里,我用 Xcode 9.3 - beta 4 的 Playground 尝试了这段代码)它为我提供了正确的答案。

#if swift(>=5.2)
print("Hello, Swift 5.2")
#elseif swift(>=5.1)
print("Hello, Swift 5.1")
#elseif swift(>=5.0)
print("Hello, Swift 5.0")
#elseif swift(>=4.1)
print("Hello, Swift 4.1")
#elseif swift(>=4.0)
print("Hello, Swift 4.0")
#elseif swift(>=3.0)
print("Hello, Swift 3.x")
#else
print("Hello, Swift 2.2")
#endif

回答您的问题:我不确定,但根据上述代码的结果,我可以说,您的 Xcode 工具支持的最新 Swift 版本成为 Playground 的 Swift 语言版本。 p>

【讨论】:

令人惊讶的是,这也适用于 iPad Playgrounds 应用程序【参考方案2】:

默认情况下,Playground 根据您的 Xcode 版本使用 Swift 版本

您可以在此处通过 Xcode 发布查看 Swift 版本 https://swift.org/download/#releases

【讨论】:

一个小警告:Some Apple documentation is incorrect regarding which Swift version is available for Xcode. 如果您在 iPad 上使用 Swift Playgrounds 应用程序,这将不起作用。 Krunal 的建议确实有效【参考方案3】:

在终端运行

swift -version

很可能游乐场会使用那个版本

【讨论】:

如果您安装了多个 Xcode 版本,这并没有真正的帮助。 --找swift看路径。可以使用 xcrun 指向相关版本(如果不同) 在之前添加sudo xcode-select --switch /Applications/Xcode.app,以确保您运行的命令行工具与您的主要 Xcode 相同。

以上是关于如何检查 Playground 的 swift 版本?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift Playground 中生成 PDF

如何通过在 swift playground 中传递 Int 数组来创建求和函数并调用它?

如何在 Swift Playground 中输入 pi 符号。 option + p 在我的 MacBookPro 键盘上不起作用...?

如何在 Playground 中导入 Swift 包?

如何在 Playground 中使用 Swift 包管理器

如何使用 Swift 在 Playground 中获取用户交互事件