如何在终端中使用swift?


108

我阅读了Xcode 6的新增功能。本文介绍了有关Xcode 6的一些新功能,并说:

命令行

Xcode的调试器包括Swift语言的交互式版本,称为REPL(Read-Eval-Print-Loop)。使用Swift语法来评估正在运行的应用程序并与之交互,或者在类似脚本的环境中编写新代码。REPL可从Xcode控制台的LLDB或Terminal中获得。

我想知道如何获得REPL?


3
这是我写的一篇关于此的文章。medium.com/swift-programming/…–
Santosh

你也可以用它上网,如果你喜欢repl.it/languages/swift
阿姆贾德Masad

Answers:


135
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

那么您可以执行以下操作之一:

xcrun swift 
lldb --repl

从Xcode 6.1开始swift,在终端中键入也会启动REPL。


2
...然后退出,请输入Ctrl+ d
arve0

57

另外,如果您不想弄乱当前的开发环境,则可以运行:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift

30
或者,您甚至可以更进一步,并将其添加到您的中~/.bash_profilealias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
David Beck 2014年

6
为了能够使用OS X SDK,您还必须指定其路径:/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -sdk /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk
LinusUnnebäck2014年

感谢大卫的想法。我已将其添加到配置文件中,但是即使该文件或目录在此处,并且权限为,也始终没有显示此类文件或目录-rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift。我的单位不那么强。谁能看到哪里出了问题?
MarkAurelius 2014年

使用xcrun --find swift路径将是未来的更多证据
Mike Weller

1
xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swift好多了。原始答案在这里:stackoverflow.com/a/36254848/5768974
Puttin'9

42

步骤1:打开终端
步骤2:输入“ swift”
步骤3:没有步骤3

例:

GoldCoast:~ macmark$ swift
Welcome to Swift!  Type :help for assistance.
  1> println("Hello, world")
Hello, world
  2> var myVariable = 42
myVariable: Int = 42
  3> myVariable = 50
  4> let myConstant = 42
myConstant: Int = 42
  5> println(myVariable)
50
  6> let label = "The width is "
label: String = "The width is "
  7> let width = 94
width: Int = 94
  8> let widthLabel = label + String(width)
widthLabel: String = "The width is 94"
  9> :exit

GoldCoast:~ macmark$ 

尽管您可以继续使用xcrun swift,但从Swift 2.1开始,您可以仅从命令行运行swift
timbo 2015年

我的示例来自2014年7月的Swift 1.0。自此以来,我一直没有使用xcrun。
MacMark 2015年



10

如果有人在乎一个简单的Swift脚本shebang:

#!/usr/bin/env xcrun --sdk macosx swift

如果需要特定的目标版本

#!/usr/bin/env xcrun --sdk macosx swift -target x86_64-macosx10.11

如果需要特定的工具链(例如您想使用Swift 2.3,但您正在使用Xcode 8)

#!/usr/bin/env xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 --sdk macosx swift -target x86_64-macosx10.11

如果要在Xcode 7.3.1中使用Swift 2.2,请假设Xcode 7.3.1位于 /Applications/Xcode7.app

sudo xcode-select -s /Applications/Xcode7.app/
xcrun --sdk macosx swift

从现在开始,默认的活动开发人员目录已更改,您可以使用以下命令进行检查:

xcode-select -p

如果要使用Swift.org提供的快照,则不要错过此处的Installation


正如我最初在Xcode iOS项目运行swift脚本作为构建阶段回答的那样


8

**自xcode6 beta 4起更新**

这也可以在xcode首选项上完成。只需转到xcode->首选项->位置。

对于命令行工具,只需从下拉列表选项中选择所需的版本,请参见下图。(swift要求路径是xcode6的路径)。

命令行工具屏幕

我也将下面的答案留在下面。


凯恩(Kaan)所说的话,您还可以使用Apple脚本来制作简单的应用程序,以便可以使用它来回切换。

打开苹果脚本>将此代码粘贴以下代码并将其导出为应用程序,因此只需单击一下即可切换到默认路径或Beta路径(以使用swift)

set xcode6Path to "xcode-select -switch /Applications/Xcode6-Beta.app/Contents/Developer"
set xcodeDefaultPath to "xcode-select -switch /Applications/Xcode.app/Contents/Developer"

display dialog "set xcode sdk path to " buttons {"xcode 6", "default"} default button 1
copy result as list to {buttonPressed}
if buttonPressed is "default" then
    try
        do shell script xcodeDefaultPath with administrator privileges
    end try
else
    try
        do shell script xcode6Path with administrator privileges
    end try
end if

然后运行> xcrun swift

免责声明

  1. 该脚本假定您同时安装了xcode6-beta和xcode5。
  2. 如果您是尝试xcode6beta 的新开发人员,则不需要任何脚本或手动设置路径。只需xcrun swift按照已为您设置的路径运行即可。
  3. 当xcode6最终发布时,您将需要从这个简单的应用程序中将路径重置为默认值,并且不再使用它。

我已经安装了XCode 5,现在已经“更新”(=替换)为XCode6。现在有没有办法带回5.x?有了这个解决方案?
Matthias Max

您是什么意思带回5.x?xcode6 GM或appstore版本将取代xcode5。
nsuinteger 2014年

6

安装正式的Xcode 6.1版本后,中有一个swift命令/usr/bin/swift

请记住,如果路径中的Python与Apple提供的Python不同,则swift可能会失败ImportError: No module named site。在这种情况下,请确保export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin在致电之前确定要这样做swift


5

xcrun命令将使用DEVELOPER_DIR环境变量来覆盖当前选择的Xcode安装(由xcode-select设置)。您可以使用它来构造一个命令,该命令将在命令行上快速运行并将您放入REPL中。看起来像这样:

/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift 

您可以将其别名为“ swift”:

alias swift="/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift"

有趣的是,您可以使用相同的调用来运行swift脚本,就像您通过添加-i来使用bash或python一样:

#!/usr/bin/env DEVELOPER_DIR=/Applications/Xcode6-Beta.app/Contents/Developer xcrun swift -i

println("Hello World!")

当然,一旦Xcode 6正式发布,并且您将其切换为默认的开发人员工具,则可以删除DEVELOPER_DIR = ..位,只需使用“ xcrun swift”即可。


4

确保您安装了xcode 6.0,而不是6.1

如果出现错误:

<unknown>:0: error: the SDK 'MacOSX10.9.sdk' does not support Swift

赶紧跑

xcrun --sdk iphonesimulator8.0 swift

或者你可以

export SDKROOT="iphonesimulator8.0" 

然后

xcrun swift

使用“ xcodebuild -showsdks”列出可用的SDK名称。

如果你安装的Xcode 6.1,只是

sudo xcode-select -s /Applications/*your-Xcode-6.1-path.app*/Contents/Developer
xcrun swift

2

对于XCode6,请运行以下命令:

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/

$ xcrun swift

如果出现错误:

<unknown>:0: error: the SDK 'MacOSX10.9.sdk' does not support Swift

尝试:

xcrun swift -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk

1

打开终端,

$sudo xcode-select -switch /Applications/Xcode6-Beta6.app/Contents/Developer

注意:Xcode6-Beta6.app应及时更换,安装相应版本

然后把此行alias swift='xcrun swift'~/.bash_profile

和,

$source ~/.bash_profile

$swift

你去!


1

借助Swift REPL(读取Eval打印循环)。

熟悉解释型语言的开发人员在此命令行环境中会感到很舒服,即使是经验丰富的开发人员也会发现一些独特的功能

启动Terminal.app并键入swift并按Enter。然后,您将进入Swift REPL。

        1> print("Hello Swift REPL")
     Hello Swift REPL
        2> 10 + 20
     $R0: Int = 30
        3> var name = "Yogendra Singh"
     name: String = "Yogendra Singh"
        4> print(name)
     Yogendra Singh
        5>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.