第2章 Scala解释器(REPL)

本文来自艾叔编著的《零基础快速入门Scala》免费电子书,添加文末艾叔微信,获取完整版的PDF电子书

第2章  Scala解释器(REPL)

本章介绍Scala中的一个重要工具Scala解释器。Scala解释器是一个直接执行Scala代码,并返回结果的工具,它的工作过程可以分为:读取、求值、打印,三个部分,并且不断循环。Scala解释器对应的英文是:Read-eval-print-loop,缩写就是REPL。

2.1  REPL基本使用

运行Scala解释器的命令如下

[user@localhost ~]$ scala

运行后的界面如下

scala>

可以在>后面输入Scala代码

scala> println("Hello World!")

Scala解释器直接给出执行的结果

Hello World!

& REPL可以即时反馈结果,便于快速试错。以HelloWorld为例,在REPL中,不需要像之前那样,要创建一个HelloWorld.scala文件,然后声明Package,import package,声明object,编写main函数代码,然后编译、运行,在REPL中仅仅只需要输入最关键的代码,非常方便。

退出REPL

scala> :q

& Scala解释器执行程序的原理:读入代码=>翻译成字节码=>JVM执行字节码=>获得结果=>控制台显示;

& REPL中定义的变量,在后面可以引用,如果后面又定义了同名变量,则以后面的定义为准。

2.2  查看REPL帮助

scala> :help

会显示Scala解释器的内置命令,如下所示,所有的内置命令都是以冒号(:)开头。

:edit <id>|<line>        edit history

:help [command]          print this summary or command-specific help

:history [num]           show the history (optional num is commands to show)

:h? <string>             search the history

......

2.3  REPL快捷键

REPL中的快捷键及说明如下表所示

表3-1 REPL常用快捷键及使用说明

序号

功能

快捷键

使用说明

1

遍历历史命令

上下光标键

按动上下光标键,可以查看之前在REPL输入的命令。

2

补全

Tab键

  1. 补全变量:如果一个变量已经声明过,再次输入时,只需要从该变量的第一个字符开始,顺序输入部分字符,然后通过Tab就可以补全;
  2. 补全方法,在一个对象后面输入点(.)后,按下Tab键,可以自动显示该对象支持的方法,输入方法的前几个字符,按下Tab键,可以自动补全。

2.4  REPL输入多行

输入

scala> var i=0

输出

i: Int = 0

输入while循环,共4行,输入第一行后,回车,会出现REPL会显示|,后面输入第二行内容,再回车,REPL又会显示|,输入第三行内容,再回车,直到第四行}结束。

scala> while (i < 3) {

     | println(i)

     | i+=1

     | }

REPL执行输出如下。

0

1

2

结论:

  • 如果上下两行没有关系,直接输入;
  • 如果上下两行在一个大括号内,则加上大括号,按行顺序输入,切记,REPL中,一行输入就过了,没有办法把光标再移动到前面的行来编辑的。在REPL中用结对编程不太好,例如输入下面的代码后,按照结对编程的习惯,左右括号同时出现,因此,会在输入左括号{后,回车,输入右括号},这样,REPL会直接执行,而不会给机会去编辑{}内的代码。

scala> while (i < 3) {

2.5  REPL导入与导出

复制文件中的代码到REPL,有2种方法:

1)打开文件,复制代码,在REPL中直接粘贴。

& 复制和粘贴的方法,因打开工具而异:例如,Putty.exe中,选中即复制,右键即粘贴;在Xfce4 Terminal中,复制要先选中,然后右键选中Copy,粘贴则要右键,选中Paste;

& 导入代码时,如果代码长的话,建议分成多个部分,每次只导入几行代码,这样便于排除错误。

2)在REPL中使用:paste命令,粘贴,完毕后使用ctrl +d退出

scala> :paste

粘贴,注意:粘贴后的代码,也是无法修改的。

var i=0

while(i < 3){

        println(i)

        i+=1

}

按ctrl + d,REPL输出如下

0

1

2

导出REPL中的代码或命令使用:history,例子如下

scala> :history

REPL会列出最近的命令和代码,如下,这样,可以把这些输出再复制到文件中,保存起来。

 36  var i=0

 37  while(i < 3){

 38          println(i)

 39          i+=1

 40  }

 41  :history

加艾叔微信,加入Linux(Shell+Zabbix)、大数据(Spark+Hadoop)、云原生(Docker+Kubernetes)技术交流群

关注艾叔公众号,获取更多一手信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值