如何快速学习Scala

原文地址:GETTING STARTED

学习Scala语言最好的方法取决于你的知识储备和你的学习习惯。现在已经有了大量关于Scala的资料,如书籍、教程、训练语料、介绍和课程等。很多人找到一本关于Scala的书,并且马上开始使用Scala编译器去尝试Scala的例子。另一方面,你可能想使用线上有效的语料使用Scala进行训练。
正如你所了解的,Scala迅速的成长,现在已经有了更多先进的资料和友好的Scala社区,这里很多人都展示出了对Scala的热情以及对新人的欢迎。很多人写了很多关于Scala的有用的资料,并且很愿意通过Email回复关于技术上的问题,在Scala论坛和一些个人博客上也有介绍先进的概念和工具。

0. 初学者建议

如果你现在想开始学习如何编程,你能找到大量的关于Scala的资料,当然这个在你有一定编程经验的前提下的。下面我们推荐两个有价值的资料给Scala初学者,这将直接带你进入Scala的世界:

  • 在coursera上的在线课堂。由Scala的创始人Martin Odersky进行讲授。这套在线课程从学术的角度讲授了函数式编程。你将能通过解决函数式任务学习到很多Scala知识。
  • Kojo是一个交互式学习环境,你可以通过使用Scala编程去探索和完成数学、艺术、音乐、动画和游戏。

1. 开始Scala编程

1.1 “Hello World!”

在第一个示例里,我们使用标准的”Hello World!”程序去展示Scala的用法,这不需要有太多了Scala语言知识。

1
2
3
4
5
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
}

这种编程风格可能对Java程序员来说比较熟悉:包含main方法,可以打印标准输出。
我们假设已经正确设置Scala软件和用户运行环境。比如:

  • Unix
  • $SCALA_HOME /usr/local/share/scala
  • $PATH $PATH:$SCALA_PATH/bin
  • Windows
  • %SCALA_HOME% c:\Progra~1\Scala
  • %PATH% %PATH%;%SCALA_HOME%\bin

1.2 交互的方式运行

“scala”这一命令可以开始一个交互式shell,以交互式运行Scala代码。
Scala-HelloWorld
“:q”是命令”:quit”的缩写,可以退出Scala shell环境。

1.3 编译文件

“scalac”命令可以实现编译一个或多个Scala源文件,并且能生成标准的JVM可运行的Java二进制文件。Scala编译器的工作原理与Java SDK编译器”javac”类似。

1
> scalac HelloWorld.scala

通过默认的”scalac”在默认路径下生成类文件,你也可以通过”-d”这一参数制定一个不同的输出路径。

1
> scalac -d classes HelloWorld.scala

1.4 执行文件

“scala”命令可以通过正确的方法执行生成的二进制文件:

1
> scala HelloWorld

“scala”命令允许我们指定命令选项,比如:-classpath (-cp) 选项

1
> scala -cp classes HelloWorld

“scala”命令的对象必须是最高级别的。如果对象继承了App特征,那么所有包含在这个对象中的语句都会被执行;否则你必须添加一个”main”方法,这一方法扮演着你的程序入口的角色。
下面是”Hello, world!”程序示例继承App特征的样子:

1
2
3
object HelloWorld extends App {
println("Hello, world!")
}

1.5 使用脚本运行

我们也可能使用shell脚本或者”batch”命令运行我们的例子。
使用”bash shell”脚本”script.sh”包含如下的Scala代码:

1
#!/bin/sh
exec scala "$0" "$@"
!#
object HelloWorld extends App {
  println("Hello, world!")
}
HelloWorld.main(args)

可以直接被如下命令执行:

1
> ./script.sh

注意:我们假定script.sh文件中scala命令已经在PATH环境变量中声明。