Scala Tour

[译]Scala快速开始

2017-04-25  本文已影响39人  steanxy

学习Scala最好的方法取决于你已经会的东西以及你想学习的方式。有很多可供选择的资源,比如书籍,教程,培训课程,演示报告以及使用Scala编译器练习。很多人会找到一种组合方式,一方面准备一本Scala的书籍并且立即开始使用Scala编译器尝试示例。另一方面,你可能想要从Scala培训课程或者使用在线提供的资料开始。
随着你的Scala知识不断增长,你会发现有很多高阶资料和一个非常友好的Scala社区可以帮助你。他们都对Scala富有激情并且热烈欢迎新成员。很多人都为新接触Scala的程序员写了帮助资料,他们会在Scala论坛或个人博客中回复寻求帮助的邮件或者分享新技术、高阶概念或工具。

为编程初学者准备的Scala

如果你刚开始学习编程,你会发现大部分关于Scala的资料都假定你已经有一定的编程经验了。有两个很有价值的资源推荐给编程初学者,它们会带领你进入Scala的世界:

你的第一行代码

"Hello World!"程序

作为第一个示例,我们使用标准的"Hello World!"程序来说明在对很多语言知识不了解的情况下如何使用Scala工具。

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

对Java程序员来说,这个程序的结构应该很熟悉,它包含了main函数,可以打印"Hello World!"到标准输出。
我们假设Scala软件和用户环境都已经正确设置好。例如:

环境 变量 值(示例)
Unix $SCALA_HOME /usr/local/share/scala
$PATH \$PATH:\$SCALA_HOME/bin
Windows %SCALA_HOME% c:\Progra~1\Scala
%PATH% %PATH%;%SCALA_HOME%\bin

交互式运行

Scala命令会启动一个交互式shell,在这里Scala表达式可以被交互式地解释执行。

> scala
This is a Scala shell.
Type in expressions to have them evaluated.
Type :help for more information.
scala> object HelloWorld {
    |   def main(args: Array[String]): Unit = {
    |     println("Hello, world!")
    |   }
    | }
defined module HelloWorld
scala> HelloWorld.main(Array())
Hello, world!
scala>:q
>

:q缩写代表内部shell命令:quit,用于退出解释器。

编译

scalac命令会编译一个(或多个)Scala源文件并且生成可以在任何标准JVM上执行的Java字节码。Scala编译器和javacJava SDK的编译器)的工作方式类似。

> scalac HelloWorld.scala

默认地,scalac生成class文件到当前的工作路径中。可以使用-d选项来指定一个不同的输出路径。

> scalac -d classes HelloWorld.scala

执行

scala会使用合适的选项来执行生成的字节码:

>scala HelloWorld

scala允许我们指定命令选项,如-classpath(也可写为-cp)选项:

>scala -cp classes HelloWorld

scala命令的参数必须是一个顶层对象。如果对象扩展了scala.App特征,那么所有包含在这个对象中的语句都会被执行,否则你必须添加一个main函数作为程序入口。
下面是使用App特征的"Hello, world!"程序:

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

脚本

我们可能也想让示例作为shell脚本或者批处理命令运行。
bash shell脚本script.sh包含下面的Scala代码:

#!/usr/bin/env scala
object HelloWorld extends App {
  println("Hello, world!")
}
HelloWorld.main(args)

可以直接使用shell命令执行:

> ./script.sh

注意:我们假设这里的script.sh文件有执行权限并且scala命令的搜索路径已经配置在PATH环境变量中了。


上一篇下一篇

猜你喜欢

热点阅读