【问题标题】:How can I use swift in Terminal?如何在终端中使用 swift?
【发布时间】:2014-07-23 13:12:00
【问题描述】:

我读过What's new in Xcode 6。这篇文章介绍了 Xcode 6 的一些新特性,它说:

命令行

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

我想知道如何获得 REPL?

【问题讨论】:

标签: xcode swift terminal read-eval-print-loop


【解决方案1】:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

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

xcrun swift 
lldb --repl

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

【讨论】:

  • ...要退出,请输入Ctrl+d
【解决方案2】:

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

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

【讨论】:

  • 或者,您甚至可以更进一步,将其添加到您的~/.bash_profilealias swift="/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift"
  • 为了能够使用 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
  • 感谢大卫的想法。我将它添加到配置文件中,但我不断收到没有这样的文件或目录,即使它就在那里,并且权限是-rwxr-xr-x@ 1 mark2 admin 33557440 31 May 14:43 swift。我单位没那么强。谁能看出什么问题?
  • 使用xcrun --find swift 来获取路径将更具未来性
  • xcrun --toolchain com.apple.dt.toolchain.Swift_2_3 swift 更好。原答案在这里:stackoverflow.com/a/36254848/5768974
【解决方案3】:

** 更新至 xcode6 beta 4 **

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

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

我也会在下面留下我之前的答案。


Kaan 说的,你也可以用一个苹果脚本来制作简单的应用,这样你就可以用它来回切换了。

open apple script > 粘贴下面的代码并将其导出为应用程序,因此只需单击一下即可切换到默认路径或 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,现在已经“更新”(=替换)到 XCode 6。现在有办法恢复 5.x 吗?用这个解决方案?
  • 带回 5.x 是什么意思? xcode6 GM 或 appstore 版本将取代 xcode5。
【解决方案4】:

与从终端运行 Swift 一样,您也可以执行脚本。 只需使用以下 shebang,然后运行您的脚本。 (As per Chris Lattner,Swift 的创造者)

#!/usr/bin/env xcrun swift -i

【讨论】:

  • 根据 XCode 6 Beta 5,-i 标志已被删除,这将导致错误。放手,改用#!/usr/bin/env xcrun swift
  • 任何想在 Xcode 8 中使用 Swift 2.3 的人都不要错过stackoverflow.com/a/36254848/1298043
【解决方案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”。

【讨论】:

    【解决方案6】:

    第 1 步:打开终端
    第 2 步:输入“swift”
    第三步:没有第三步

    例子:

    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
    • 我的示例来自 2014 年 7 月的 Swift 1.0。从那时起它就在没有 xcrun 的情况下工作了。
    【解决方案7】:

    打开终端,

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

    注意:Xcode6-Beta6.app 应替换为您安装的相应版本

    然后把这行alias swift='xcrun swift' 改成~/.bash_profile

    还有,

    $source ~/.bash_profile

    $swift

    你去!

    【讨论】:

      【解决方案8】:

      对于 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
      

      【讨论】:

        【解决方案9】:

        确保您安装的是 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
        

        【讨论】:

          【解决方案10】:

          安装Xcode 6.1官方版本后,/usr/bin/swift中有swift命令。

          请记住,如果路径中的 Python 与 Apple 提供的 Python 不同,swift 可能会因ImportError: No module named site 而失败。在这种情况下,请确保在调用 swift 之前先执行 export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin

          【讨论】:

            【解决方案11】:

            在安装了命令行工具的 Xcode 6.1.1 中,您可以通过以下方式直接引用 /usr/bin/swift 来执行脚本:

            #!/usr/bin/swift
            
            let variable: String = "string"
            print("Test \(variable)")
            

            【讨论】:

            【解决方案12】:

            如果有人关心一个简单的 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 here


            正如我在Run swift script from Xcode iOS project as build phase中首次回答的那样

            【讨论】:

              【解决方案13】:

              借助 Swift REPL(Read Eval Print Loop)。

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

              启动 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>
              

              【讨论】:

                猜你喜欢
                • 2016-01-31
                • 1970-01-01
                • 1970-01-01
                • 2011-08-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-10-20
                • 2020-07-28
                相关资源
                最近更新 更多