Scala(一)

Scala语言基础

1、Scala简介

Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。它也能运行于CLDC配置的Java ME中。目前还有另一.NET平台的实现,不过该版本更新有些滞后。Scala的编译模型(独立编译,动态类加载)与Java和C#一样,所以Scala代码可以调用Java类库(对于.NET实现则可调用.NET类库)。Scala包括编译器和类库,以及BSD许可证发布。

2、Scala安装与配置

安装
Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机,推荐安装JDK1.8。

http://www.scala-lang.org/ 下载Scala2.11.8程序安装包

Scala(一)

根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录。
注意:安装时,安装路径中不能含有空格。

将scala安装目录下的bin目录加入到PATH环境变量:
SCALA_HOME:

SCALA_HOME= D:\scala-2.11.8

PATH:
在PATH变量中添加:%SCALA_HOME%\bin

完成以上流程后,在命令行输入:scala,进入如下界面:
Scala(一)
注意:该操作Windows和Linux配置流程是一样的。可以参考Java的JDK的配置过程。
到此为止,Scala的安装已经成功。

配置IDEA

1) 打开IDEA工具,如图:点击Configure

Scala(一)

2) 点击Plugins

Scala(一)

3) 点击Install plugin from disk

Scala(一)

4) 选择scala的plugins

Scala(一)

5) 此时会显示一个Scala的条目,在右侧点击Restart IntelliJ IDEA

Scala(一)

6) 创建Maven项目

创建的maven项目默认是不支持scala的,需要为项目添加scala的framework,如图:
Scala(一)
在这里选择Scala后,在右边的Use library中配置你的安装目录即可,最后点击OK。

Scala(一)

7) 在项目的目录结构中,创建scala文件夹,并标记为source(file-project structure)

Scala(一)
Scala(一)

8) 以上配置都完成后,就可以在scala上点击右键创建scala class了

Scala(一)

3、Scala的运行环境

REPL(Read Evaluate Print Loop):命令行
IDE:图形开发工具
The Scala IDE (Based on Eclipse):http://scala-ide.org/
IntelliJ IDEA with Scala plugin:http://scala-ide.org/
Netbeans IDE with the Scala plugin

4、Scala的常用数据类型

注意:在Scala中,任何数据都是对象。例如:

Scala(一)
① 数值类型:Byte,Short,Int,Long,Float,Double
Byte: 8位有符号数字,从-128 到 127
Short: 16位有符号数据,从-32768 到 32767
Int: 32位有符号数据
Long: 64位有符号数据

例如:
val a:Byte = 10
a+10
得到:res9: Int = 20
这里的res9是新生成变量的名字

val b:Short = 20
a+b

注意:在Scala中,定义变量可以不指定类型,因为Scala会进行类型的自动推导。

② 字符类型和字符串类型:Char和String
对于字符串,在Scala中可以进行插值操作。

Scala(一)
注意:前面有个s;相当于执行:"My Name is " + s1

③ Unit类型:相当于Java中的void类型
Scala(一)
④ Nothing类型:一般表示在执行过程中,产生了Exception
例如,我们定义一个函数如下:

Scala(一)

5、Scala变量的申明和使用

使用val和var申明变量
例如:scala> val answer = 8 * 3 + 2

可以在后续表达式中使用这些名称

val:定义的值实际是一个常量
要申明其值可变的变量:var

注意:可以不用显式指定变量的类型,Scala会进行自动的类型推到

6、Scala的函数和方法的使用

可以使用Scala的预定义函数
例如:求两个值的最大值

Scala(一)
也可以使用def关键字自定义函数
语法:

Scala(一)
示例:
Scala(一)

7、Scala的条件表达式

Scala的if/else语法结构和Java或C++一样。
不过,在Scala中,if/else是表达式,有值,这个值就是跟在if或else之后的表达式的值。

8、Scala的循环

Scala拥有与Java和C++相同的while和do循环
Scala中,可以使用for和foreach进行迭代

使用for循环案例:
Scala(一)
注意:
<- 表示Scala中的generator,即:提取符
第三种写法是第二种写法的简写

在for循环中,还可以使用yield关键字来产生一个新的集合
Scala(一)
在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。

使用while循环:注意使用小括号,不是中括号
Scala(一)
使用do … while循环
Scala(一)
使用foreach进行迭代
Scala(一)
注意:在上面的例子中,foreach接收了另一个函数(println)作为值