2.1 Scala解释器下的REPL
开始Scala的最简单的方式就是使用Scala解释器——一个编写Scala表达式和程序的交互式shell。 在命令行窗口键入scala,即可开启Scala解释器的交互模式。 如果安装没有问题的话,你将看到如下输出:
Welcome to Scala version 2.10.0.final (Java ...).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
这意味着你的Scala已经安装成功。 我跑的是2.10.0版本的Scala,所有的示例代码都能在这个和比这个高的版本上运行。 在Scala命令行,键入42并回车,你将看到如下输出:
scala> 42
res0: Int = 42
第一行是你的输入。
Scala解释器读到你输入的42
,经过计算得知它是一个整型字面量,因此创建一个Int型对象来表示它,并将其返回到控制台进行打印。
res0
是Scala解释器创建的指向这个对象的变量的名字(在你的机器上可能得到不同的变量名,因为变量名是由Scala解释器在运行时根据上下文情况动态创建的)。
如果此时键入这个变量名,例中的res0
,你会在命令行窗口看到如下类似输出:
scala> res0
res1: Int = 42
这些步骤合在一起被称为read-evaluate-print loop (REPL,读算写循环)。 你可以在Scala解释器中反复执行read-evaluate-print循环的步骤。 现在,你可以编写你的第一个Scala版的Hello World了:
scala> println("Hello world")
Hello world
你调用了println
函数,向它传入了一个字符串类型的参数Hello world
,结果是Scala将这个字符串原样输出。
定义 println是定义在scala.Console类中的一个函数,它内部通过调用System.out.println来向控制台打印信息。 Scala的Predef(标准库的一部分)会将println映射到Console.println,这样你就不必在用它的时候加上Console前缀了。
在第1章中,我提到过Scala可以很好的和Java进行集成,但是并没有列举相关示例。 现在补充如下:
scala> val myList = new java.util.ArrayList[String]()
myList: java.util.ArrayList[String] = []
在这个例子中,你创建了一个java.util.ArrayList类的实例,它可以存放String类型的对象。
如果你想不起在myList
上有哪些方法可以被调用,不必担心,因为Scala解释器会对此为你提供帮助。
键入myList
,后接下个.
号,按下Tab
键,此时Scala解释器会列出所有可以调用的方法。
除了能够列出给定数据类型的方法之外,还可以对解释器已知的变量名和类名进行自动补全。
我建议你在Scala解释器上多花点时间,研究一下它的可用功能,并且把它应用在书中的例子当中。
REPL能够给出快速反馈,应该把它当成学习一门新语言的重要组成部分。
表2.1展示了REPL的可用选项。
表2.1 重要的Scala解释器命令
命令 | 描述 |
:help | 这个命令打印Scala解释器中所有可用命令的帮助信息 |
:cp | 使用这个命令可以为Scala解释器在classpath中添加一个jar文件。例如,:cp tools/junit.jar操作试图在当前目录寻找一个JUnit JAR文件,如果找到则把它添加到classpath中,以使你可以访问这个JAR文件中的类 |
:load or :l | 允许你加载Scala文件到解释器。如果你想研究某个Scala文件中的代码,你可以把它加载到Scala解释器,这样其中所有定义的东西就都可用了 |
:replay or :r | 重置解释器并重播所有先前执行过的命令 |
:quit or :q | 从解释器中退出 |
:type | 不用计算就展示出表达式的类型。例如,:type 1 + 2,不用执行加法操作即可判断出表达式的类型为Int |
链接
- 目录
- 下一节: 2.2 Scala基础