加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 命令行工具

发布时间:2020-12-14 02:02:52 所属栏目:百科 来源:网络整理
导读:转自:http://www.cocoachina.com/swift/20140927/9772.html Swift 的 REPL (Read-Eval-Print Loop) 环境可以让我们使用 Swift 进行简单的交互式编程。也就是说每输入一句语句就立即执行和输出。这在很多解释型的语言中是很常见的,非常适合用来对语言的特性

转自:http://www.cocoachina.com/swift/20140927/9772.html


Swift 的 REPL (Read-Eval-Print Loop) 环境可以让我们使用 Swift 进行简单的交互式编程。也就是说每输入一句语句就立即执行和输出。这在很多解释型的语言中是很常见的,非常适合用来对语言的特性进行学习。

要启动 REPL 环境,就要使用 Swift 的命令行工具,它是以xcrun命令的参数形式存在的。首先我们需要确认使用的 Xcode 版本是否是 6.1 或者以上,如果不是的话,可以在 Xcode 设置里 Locations 中的 Command Line Tools 一项中进行选择。然后我们就可以在命令行中输入xcrun swift来启动 REPL 环境了。

在 Xcode 6.0 中是没有包含 OSX 10.10 的 SDK 的,而命令行执行 Swift REPL 是需要最新版的 OSX SDK 的。如果我们使用 Xcode 6.0 的版本的话,会出现 the SDK 'MacOSX10.9.sdk' does not support Swift 的错误。

要指出的是,REPL 环境只是表现得像是即时的解释执行,但是其实质还是每次输入代码后进行编译再运行。这就限制了我们不太可能在 REPL 环境中做很复杂的事情。

另一个用法是直接将一个.swift文件作为命令行工具的输入,这样里面的代码也会被自动地编译和执行。我们甚至还可以在.swift文件最上面加上命令行工具的路径,然后将文件权限改为可执行,之后就可以直接执行这个.swift文件了:

 
 
  1. //hello.swift
  2. #!/usr/bin/envxcrunswift
  3. println("hello")
  4. //Terminal
  5. >chmod755hello.swift
  6. >./hello.swift
  7. //输出:
  8. hello

这些特性与其他的解释性语言表现得完全一样。

相对于直接用swift命令执行,Swift 命令行工具的另一个常用的地方是直接脱离 Xcode 环境进行编译和生成可执行的二进制文件。我们可以使用swiftc来进行编译,比如下面的例子:

//MyClass.swift
  
  
  • classMyClass{
  • letname="XiaoMing"
  • funchello(){
  • println("Hello(name)")
  • }
  • }
  • //main.swift
  • letobject=MyClass()
  • object.hello()
  • >xcrunswiftcMyClass.swiftmain.swift
  • 将生成一个名叫main的可执行文件。运行之:

      
      
  • >./main
  • //输出:
  • //HelloXiaoMing
  • 利用这个方法,我们就可以用 Swift 写出一些命令行的程序了。

    最后想说明的一个 Swift 命令行工具的使用案例是生成汇编级别的代码。有时候我们想要确认经过优化后的汇编代码实际上做了些什么。swiftc提供了参数来生成asm级别的汇编代码:

      
      
  • swiftc-Ohello.swift>hello.asm
  • Swift 的命令行工具还有不少强大的功能,对此感兴趣的读者不妨使用xcrun swift --help以及xcrun swiftc --help来查看具体还有哪些参数可以使用。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读