2.3 让Scala跑起来
想快速尝试一下Scala的话,直接用scala
这个命令行shell就行。你可以在上面尝试着运行一些简单的Scala代码片断。在编写应用的时候,这个有用的工具可以帮你快速试验一些新代码。
在命令行上(不管是终端窗口还是命令提示符),输入scala
。你可以见到下面的介绍信息和一个提示符:
>scala
Welcome to Scala version 2.7.4.final (Java HotSpot(TM) Client VM,
Java 1.5.0_16).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
在提示符后面,输入val number = 6
,然后回车。Scala shell会做出如下反应,表示它把number
这个变量推演为Int
类型,因为我们给变量的赋值是6。
scala> val number = 6
number: Int = 6
scala>
现在试着输入number = 7
,Scala会给出下面的错误信息:
scala> number = 7
<console>:5: error: reassignment to val
number = 7
^
scala>
Scala告诉我们,number
这个常量不能重新赋值。但我们还是可以在控制台上重新定义常量与变量。例如输入val number = 7
,Scala就能接受了。
scala> val number = 7
number: Int = 7
scala>
只有在交互式shell上,我们才能在同一个作用范围内对常量和变量进行重新定义,这在真正的Scala代码或者脚本中是行不通的——所以说,shell的这种灵活性让我们可以更轻松地在上面进行试验。
输入val list = List(1, 2, 3)
,你会发现Scala推演出了List
的类型并输出:List: List[Int] = List(1, 2, 3)
。无论什么时候,只要你不确定某个表达式会被推演成什么类型,你都可以很快地在shell里试出结果。
你可以用“up”键找到之前输入的命令。它甚至还可以找到上一次调用shell时用过的命令。输入命令的时候,你可以用Ctrl+A回到行首,用Ctrl+E到达行尾。
只要你敲下回车键,shell就会立刻执行你输入的东西。如果你的语句没写完(例如方法定义写了一半)就按了回车,shell会提示一个竖线(|),让你把定义写完。例如下面我就是用了两行来完成isPalindrome()
方法的定义,然后调用了两次并查看结果:
scala> def isPalindrome(str: String) =
| str == str.reverse.toString()
isPalindrome: (String)Boolean
scala> isPalindrome("mom")
res1: Boolean = true
scala> isPalindrome("dude")
res2: Boolean = false
scala>
Shell上的工作做完以后,你可以输入:quit
或者exit
退出shell。除了用shell外,我们还可以在命令行上用-e
这个选项(其含义为执行参数)把简短的语句或是表达式传给Scala。
GettingStarted/RunScalaOnCommandLine.cmd
scala -e "println(\"Hello \"+args(0)+\", \"+args(1))" Buddy
"Welcome to Scala"
Scala会返回下面的信息:
Hello Buddy, Welcome to Scala
我们用了()
而不是[]
来索引args
变量——这是个Scala的惯用法,我们稍后讨论。
如果你在文件里写好了Scala代码,可以用:load
选项把它载入shell。比如要加载一个名为script.scala
的文件,就在shell里面输入:load script.scala
。这个选项可以用来加载预先写好的函数和类,并在shell里试验它们。