本文关于Scala从配置环境到测试程序。
配置环境
介绍如何搭建本机环境
1.安装Oracle JDK, the Java Development Kit, version 1.8.
$ java -version
检查java版本,应该大于1.8
mac平台已经预安装JDK,打开Terminal,输入上述命令,如果没有的话系统会问你是否安装该JDK,选择yes即可。
2. 安装sbt(Scala Build Tool ),版本大于 0.13.x
sbt的安装指导文档:https://www.scala-sbt.org/release/docs/Setup.html
安装完成后将安装路径配置到系统变量中
$ vi ~/.bash_profile
$ export PATH=$PATH:/your_sbt_path/bin
$ source $HOME/.bash_profile
验证sbt已经安装成功:
$ sbt about
This is sbt 1.1.0
3. 安装scala IDE,这里使用Intellij IDEA
官方安装地址:https://www.jetbrains.com/idea/download
安装scala插件:Configure → Plugins → Browse JetBrains Plugins -> scala -> Install plugin
设置JDK: Configure → Project defaults → Project structure
SBT
sbt概念和使用介绍。
1.项目根目录(base directory)
什么是sbt项目根目录?打开包含sbt项目的文件夹,如果有‘build.sbt’在顶层文件夹,这个顶层文件夹就是sbt项目根目录。
2.源代码(Source code)
源代码可以放在项目根目录下,以scala为扩展名,例如hellow.scala。但是一般不放在根目录,因为这样太混乱。
SBT采用与Maven一样的文件夹结构如下
src/
main/
resources/
<files to include in main jar here>
scala/
<main Scala sources>
java/
<main Java sources>
test/
resources/
<files to include in test jar here>
scala/
<test Scala sources>
java/
<test Java sources>
src/下的其他文件夹将被忽略,所有隐藏文件夹也会被忽略。
3. SBT build定义文件
sbt build定义文件就是以.sbt为扩展名的文件。我们已经知道根目录下有一个build.sbt,其他的.sbt文件在project的子文件夹下。
project文件夹能够存放.scala文件,与.sbt文件一起构成定义文件。更多信息:http://www.scala-sbt.org/0.13/docs/Organizing-Build.html
4. 启动sbt
打开项目根目录,启动sbt RERL
$ cd /your_project_directory
$ sbt
5. 通过sbt启动Scala RERL
启动sbt RERL后,输入console命令启动Scala RERL。
> console
这种方式启动Scala将加载该项目下所有的代码,所以只有当你的代码没有编译错误时才能启动成功。
退出Scala RERL的方法,按下<Ctrl + D>
6. 编译代码(compiling your code)
使用compile命令编译所在项目文件夹下的源文件。
> compile
7. 测试代码(testing your code)
src/test/scala文件夹下包含单元测试文件。使用test命令运行。
> test
8. 运行代码(run your code)
如果项目中有object包含main方法,那么可以使用run命令运行,如果检测到多个main程序,可以选择其中一个运行。
> run
Scala简介
一个极简Scala编程介绍。
1.Classes
Scala的classes与Java的classes非常相似,都是包含fields和methods的模板。classes能够使用new方法实例化,一个class可以包含多个instances(或者”objects”)。
Scala有一个比较特殊的class类型叫做case classes。
Scala的class没有static成员,你可以使用objects实现java中static成员的功能。
2. Traits
Traits类似于Java中的接口,但是它能够包含concrete成员,例如方法的实现和field的定义。
3.Objects
Scala中的Object类似于classes,但是每个object只能有一个实例。不能使用new方法创建objects的实例,你只能通过object的名字访问其中的成员(fields或者methods)。
4.Packages
在文件的头部添加类似package foo.bar的声明相当于生成了包含foo.bar代码的package。你可以通过import foo.bar._使所有package foo.bar中的代码在你的代码中可用。引用package中某个class可以使用import foo.bar.MyClass
Scala也支持引用object,例如,假设有个object是baz,可以使用import foo.bar.baz._
5.program
Scala中两种方式定义一个program,以输出”Hello,World!”为例:
第一种方式:
···
object HelloWorld extends App {
println("Hello, World!")
}
···
第二种方式:
···
object HelloWorld {
def main(args: Array[String]) {
println("Hello, World!")
}
}
···
Scala中,main函数定义在object中,你可以将一个object扩展为app,或者在object中添加一个method,def main(args: Array[String])
测试程序
- 下载样例程序并解压缩:http://alaska.epfl.ch/~dockermoocs/progfun1/example.zip
- 使用Intelij IDEA导入样例程序。
- 添加主函数
在src->main->scala->example右键,选New->scala class,下拉菜单选object,名字为Main,按以下代码改写程序
···
object Main extends App {
println(Lists.max(List(1,3,2)))
}
···
右键选择Run‘Main’