Scala 基本语法

数据类型

Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:
屏幕快照 2020-04-07 下午11.53.42.png

上表中列出的数据类型都是对象,也就是说scala没有java中的原生类型。在scala是可以对数字等基础类型调用方法的。

这里就不多说了,其中需要注意的一点,就是字符与字符串的表示,因为平常使用python编程也是比较多的,在python中字符串是用单引号表示的,所以切换回scala,总会出现使用单引号定义字符串的情况


在 Scala 字符变量使用单引号 来定义,如下:
‘a’
而字符串字面量使用双引号 来定义,如下:
“Hello,World!”

变量定义


声明变量实例如下:

1
var myVar : String = "Foo"


声明常量实例如下:

1
val myVal : String = "Foo"

以上定义了常量 myVal,它是不能修改的。如果程序尝试修改常量 myVal 的值,程序将会在编译时报错。

变量类型声明


变量的类型在变量名之后的 :声明。定义变量的类型的语法格式如下:

1
2
3
4
5
var VariableName : DataType =  Value



val VariableName : DataType = Value


在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。


屏幕快照 2020-04-07 下午11.28.31.png


上图则为省略变量类型,scala根据初始值进行判断。但是在项目开发中,建议大家不要省略变量类型。

访问修饰符


Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。

条件语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(布尔表达式)
{
// 如果布尔表达式为 true 则执行该语句块
}

if(布尔表达式){
// 如果布尔表达式为 true 则执行该语句块
}else{
// 如果布尔表达式为 false 则执行该语句块
}

if(布尔表达式 1){
// 如果布尔表达式 1 为 true 则执行该语句块
}else if(布尔表达式 2){
// 如果布尔表达式 2 为 true 则执行该语句块
}else if(布尔表达式 3){
// 如果布尔表达式 3 为 true 则执行该语句块
}else {
// 如果以上条件都为 false 执行该语句块
}

循环语句


这里就不描述 while() do while() 语句了和其他语言基本一致,这里只描述和其他语言有差异的for循环


语法如下:

1
2
3
4
5
6
7
8
9
10
11
for( var x <- Range ){
statement(s);
}

以上语法中,Range 可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。


for( var x <- List ){
statement(s);
}
以上语法中, List 变量是一个集合,for 循环会迭代所有集合的元素。


yield:
你可以利用yield 将 for 循环中符合条件的值作为一个变量存储。语法格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
object Test {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);

// for 循环
var retVal = for{ a <- numList
if a != 3; if a < 8
}yield a

// 输出返回值
for( a <- retVal){
println( "Value of a: " + a );
}
}
}


屏幕快照 2020-04-08 下午9.42.12.png