如何在Playground中检查Swift版本?

16

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

单侧区间

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

现在我的playground出现了一个错误:

enter image description here

我感觉我的Swift版本可能不支持这段代码!

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

我该如何查看playground的Swift版本?


Xcode 9 - Swift 4。Xcode 8 - Swift 3。 - rmaddy
@rmaddy - 看起来是对我的一个问题,此外,Xcode 8.2支持Swift 2.0到3.2(大约)。我们如何确保playground支持3.0而不是其他版本。我该如何检查它。 - Krunal
2
@Krunal,我已经很久没有使用Xcode 8了,而且我从未使用过Swift 2。但是Swift 2和3之间的API有根本性的不同。尝试使用任何Swift 3语法。更好的方法是跟上潮流。使用Xcode 9.2并使用Swift 4。现在没有人应该再使用Swift 2了。它已经成为历史。 - rmaddy
@rmaddy 是的,我也使用Xcode 9.2+,一个简单的问题是,Xcode工具支持多个版本的Swift语言。我们如何确保playground支持哪个特定版本的Swift语言。它是否默认支持该特定Xcode工具的最新版本? - Krunal
苹果文档目前为Swift 4。names[2...]是Swift 4的语法。只有Xcode 9.x支持Swift 4 playground。目前,无法选择:playground仅与捆绑在Xcode中的最新稳定Swift版本兼容。例如:Xcode 9.3将具有Swift 4.1的playground。 - Cœur
3个回答

19

尝试使用以下代码查找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

enter image description here

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

令人惊讶的是,这在iPad Playgrounds应用程序上也可以工作。 - mfaani

3

1
小提示:有些苹果文档关于 Xcode 可用的 Swift 版本信息是错误的。 参见此处 - Cœur
如果您正在iPad上使用Swift Playgrounds应用程序,这将不起作用。但Krunal的建议确实有效。 - mfaani

0
在终端中运行
swift -version

很可能游乐场将使用该版本


2
如果您安装了多个版本的Xcode,则这并没有真正帮助到您。 - rmaddy
找到 Swift 并查看其路径。如果不同,可以使用 xcrun 指向相关版本。 - stevenpcurtis
1
在运行相同的命令行工具之前,请添加“sudo xcode-select --switch /Applications/Xcode.app”。 - Cœur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接