Xcode 6.1 引入了一个新特性用来辅助Swift开发,即Read Eval Print Loop(“读取-求值-输出”循环,简称REPL)。熟悉解释型语言的开发者将会对这个命令行环境感到舒适,而有经验的开发者也能在其中发现一些有用的 功能。要开始使用它,打开OS X Yosemite的终端应用,并输入swift。如果系统版本是OS X Mavericks,你需要输入xcrun swift,然后Swift REPL就启动了。

1
2
Welcome to Swift version 1.1 (swift-600.0.20.0). Type :help for assistance.
1>   ▌

你需要做的就是在光标处输入Swift语句,REPL将会立刻执行你的代码。表达式的结果将自动的格式化,并和输入的变量以及常量一起显示。控制台的输出流将自然的嵌入到互动会话中:

1
2
3
4
5
6
  1> "100".toInt()
$R0: Int? = 100
  2> let name = "Katherine"
name: String = "Katherine"
  3> println("Hello, \(name)")
Hello, Katherine

注意第一行命令的结果被REPL添加了一个名称,即使表达式并没有明确的分配名称。你能在随后的语句中使用这些变量名称来重用它们:

1
2
  4> $R0! + 200
$R1: Int = 300

Swift编译器还能识别未完成的代码,并且会在需要时提示补全代码。甚至代码能自动的缩进,就跟在Xcode里一样。比如,输入一个函数:

1
2
5> func timesTwo() {
6.      ▌

接下来的行的提示会显示行号和一个点,而不是用来指示新语句的尖括号。所以你一眼就能看出代码是否需要补全。在这里你能输入方法中剩下的代码:

1
2
3
5> func timesTwo() {
6.      return value * 2
7. }▌

这里有3个值得注意的地方:首先,上面的第六行是自动缩进的,但REPL会在我们输入结束的花括号时自动结束缩进。其次,上面的函数引用了一个参数,但我们忘记事先声明它了,并且函数还需要一个返回类型。最后,即使你已经在最后一行回车了,你仍然可以很方便的修改它们。

多行历史记录

当代码被提交到编译器,它同时也被储存在REPL的历史记录里面,因此修改错误将会非常简单。如果你在上面未完成的函数最后敲下回车,你会获得一条错误信息:

1
error: use of unresolved identifier 'value'

和其他大多数历史记录的实现一样,你能按下向上的箭头“↑”来调出历史输入。在这里REPL将会调出整个三行输入,并将光标置于最后。现在你能够编辑代码来改正输入错误了。

你的输入的历史记录将会保存在会话中,并且能够记录数百条代码片段。在空行按向上键则会调出较早的历史输入,按向下键则会调出较近的历史输入。

多行编辑

即使REPL的表现像是传统的命令行编辑器,它还能提供方便的功能来处理多行输入,比如大多数类和函数声明。在上面例子里,你可以用方向键在行间移动,来快速定位需要修改的地方:

1
2
3
5> func timesTwo(▌){
6.      return value * 2
7. }

然后你可以添加参数声明以及返回类型:

1
2
3
5> func timesTwo(value: Int) -> Int▌{
6.        return value * 2
7. }

在当前光标处按下回车不会提交函数而是会插入新行,你需要将光标移到函数的末尾按下回车,函数就能够使用了:

1
2
  8>  timesTwo(21)
$R2: (Int) = 42

自动探测语句的结束点意味着你能够自由的输入代码,REPL在绝大多数情况下都能正确处理你的输入。不过意外情况也是存在的,当函数有共同依赖时,需要一次提交多个声明,比如下面的代码:

1
2
3
4
5
6
func foo() {
     bar()
}
func bar() {
     foo()
}

如果你一行一行的输入上面的代码,到第三行结束时编译器就会编译第一个函数,因此将导致错误:

1
error: use of unresolved identifier 'bar'

一个解决办法是,在同一行里输入多个函数,这样就能绕过自动探测结束点,不过还有更好的解决方案。在输入完第三行后,你能按向下键“↓”来手动增加 一行,这样你就能像平常一样输入剩下的代码了。两个函数声明将被一起编译,达到互递归(mutual recursion)的目的。

快速指南

为帮助你上手REPL,下面列出一些经常被使用的编辑和导航组合键:

1
2
3
4
5
6
7
8
9
10
11
12
13
Arrow Keys        Move cursor left/right/up/down
Control+F        Move cursor right one character, same as right arrow
Control+B        Move cursor left one character, same as left arrow
Control+N        Move cursor to end of next line, same as down arrow
Control+P        Move cursor to end of prior line, same as up arrow
Control+D        Delete the character under the cursor
Option+Left        Move cursor to start of prior word
Option+Right    Move cursor to start of next word
Control+A        Move cursor to start of current line
Control+E        Move cursor to end of current line
Delete            Delete the character to the left of the cursor
Esc <            Move cursor to start of first line
Esc >            Move cursor to end of last line

CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广 营销经验,最新企业招聘和外包信息,以及Cocos引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!

请搜索微信号“CocoaChina”关注我们!

 

Swift REPL入门介绍的更多相关文章

  1. Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

    转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina ...

  2. swift 新功能介绍

    原文链接:http://www.cocoachina.com/applenews/devnews/2014/0617/8857.html 假设你和我一样,准备好好看看苹果的 Keynote,兴奋地准备 ...

  3. Mac终端使用swift REPL异常处理方法

    Mac终端使用swift REPL异常处理方法 终端使用swift命令出现 warning: Swift error in module libmarisa.dylibDebug info from ...

  4. C# BackgroundWorker组件学习入门介绍

    C# BackgroundWorker组件学习入门介绍 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能 ...

  5. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  6. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  7. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)

    最近在使用Python爬取网页内容时,总是遇到JS临时加载.动态获取网页信息的困难.例如爬取CSDN下载资源评论.搜狐图片中的“原图”等,此时尝试学习Phantomjs和CasperJS来解决这个问题 ...

  8. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  9. iOS开发Swift篇—简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

随机推荐

  1. 【Data Structure & Algorithm】二叉树中和为某值的所有路径

    二叉树中和为某值的所有路径 题目:输入一个整数和一个二叉树,从树的根节点开始往下访问一直到叶节点所经过的所有节点形成一条路径.打印出和与输入整数相等的所有路径. 例如输入整数22和如下二叉树: 10 ...

  2. java的环境变量classpath中加点号 ‘.’ 的作用

    java的环境变量classpath中加点号 ‘.’ 的作用 “.”表示当前目录,就是编译或者执行程序时,你的.class文件所在的目录: 当找.class文件时,先去“.”路径下找,找不到的话,在去 ...

  3. Eclipse中建立自己的类库,给不同的工程使用

    win7 进入服务 开始 运行 services.msc 在多个工程当中,可能使用到相同的jar包,这时,如果我们建立一个自己的类库,该类库中存放着所有工程均需要的jar包,就可以免去重复导入的麻烦. ...

  4. jquery冲突的关键字nodeName、nodeValue和nodeType!

    原文:http://blog.csdn.net/hdfyq/article/details/52805836 [缘由]在工作流数据库设计的时候,  都节点管理的功能.  结果有2个字段为  NODE_ ...

  5. 运行程序时抛出异常“找不到请求的 .Net Framework Data Provider。可能没有安装。”

    方法1 如果系统未安装Oracle Data Provider 请参考方法2 右键单击项目,选择属性,切换到“生成”选项卡,将目标平台改为 Any CPU,并勾选“首选32位” 方法2 安装 Orac ...

  6. 解决overflow: auto在Ios中滑动不流畅

    [bug]—— H5页面在 ios 端滑动不流畅的问题   IOS系统的惯性滑动效果非常6,但是当我们对div加overflow-y:auto;后是不会出这个效果的,滑动的时候会感觉很生涩.怎么办? ...

  7. 【NOIP模拟】序列

    [问题描述] 一个序列被称为有趣的序列是它的所有的子串拥有一个唯一的整数(这个整数在整个序列中只出现过一次).给你一个序列的整数, 问你它是否是有趣的. [输入格式] 第一行 T, 表示数据组数.接下 ...

  8. NPOI用WorkbookFactory读写 2007以上格式文件(xlsx)

    //我用的最新的2.2.1版本 //第一步:引用DLL,5个全导入,包括ICSHARP.ZIP,是个开源压缩工具包.XLSX是压缩格式,需要它来解压 //第二部: using NPOI.SS.User ...

  9. StringUitl工具类中的一种写法

    typeHandlersPackageArray = StringUtils.tokenizeToStringArray(this.typeAliasesPackage, ",; \t\n& ...

  10. Zynq7000开发系列-4(新:Xilinx交叉编译环境搭建)

    一.前言  本来上一篇文章已经讲了Xilinx交叉编译环境的搭建,但是我在后续的使用中发现:使用2011年版本的交叉编译链编译OpenCV 3.1.0时出现错误: 网络搜索一番,查明是交叉编译链的问题 ...