一、Hello, world
object Hello extends App {
println("Hello, world")
}
1、两种类型的变量
Scala有两种类型的变量:
val是一个不可变的变量(例如final在Java中),应首选
var 创建一个可变变量,并且仅在有特定原因使用它时才使用
例子:
val x = 1 //immutable
var y = 0 //mutable
2、声明变量类型
在Scala中,通常创建变量时无需声明其类型:
val x = 1
val s = "a string"
val p = new Person("Regina")
执行此操作时,Scala通常可以为您推断数据类型,如以下REPL示例所示:
scala> val x = 1
val x: Int = 1
scala> val s = "a string"
val s: String = a string
二、控制结构
1、Scala控制结构
if (test1) {
doA()
} else if (test2) {
doB()
} else if (test3) {
doC()
} else {
doD()
}
2、三元运算符:
val x = if (a < b) a else b
3、匹配表达式
Scala有一个match表达式,其最基本的用法类似于Java switch语句:
val result = i match {
case 1 => "one"
case 2 => "two"
case _ => "not 1 or 2"
}
object Hello extends App {
val i = 2
val result = i match {
case 1 => "one"
case 2 => println("two")
case _ => "not 1 or 2"
}
}
two
这是match被用作方法主体并针对许多不同类型进行匹配的示例:
def getClassAsString(x: Any):String = x match {
case s: String => s + " is a String"
case i: Int => "Int"
case f: Float => "Float"
case l: List[_] => "List"
case p: Person => "Person"
case _ => "Unknown"
}
object for_x extends App {
class Person{}
def getClassAsString(x: Any):String = x match {
case s: String => s + " is a String"
case i: Int => "Int"
case f: Float => "Float"
case l: List[_] => "List"
case p: Person => "Person"
case _ => "Unknown"
}
val a = new Person
print(getClassAsString(a))
}
Person
4、for循环和表达式
for (i <- 0 to 5) println(i)
0
1
2
3
4
5
Process finished with exit code 0
5、while循环
while(condition) {
statement(a)
statement(b)
}
// do-while
do {
statement(a)
statement(b)
}
while(condition)