1. if
if/ese 语法和其他语言差不多,但是scala的if有返回值
object ScalaApp extends App {
val x = "scala"
val result = if (x.length == 5) "true" else "false"
println(result)
}
2. 代码块
使用 {} 块包含一系列表达式,块中最后一个表达式的值就是块的值
object ScalaApp extends App {
val result = {
val a = 1 + 1; val b = 2 + 2; a + b
}
println(result)
}
如果代码块里面最后一个语句没有返回值,则返回Unit
val result ={ val a = 1 + 1; val b = 2 + 2 }
3. while
object ScalaApp extends App {
var n = 0
while (n < 10) {
n += 1
println(n)
}
do {
n += 1
println(n)
} while (n < 10)
}
4. for
n<-1 是一个生成器,一般在循环中使用
object ScalaApp extends App {
//基本使用
for (n <- 1 until 10) { println(n) } //输出1~9
for (n <- 1 to 10) { println(n) } //输出1~10
for (n <- 2 to 10 by 2) { println(n) } //输出 2,4,6,8,10,步长为2
}
to 跟until 都可以通过by设置步长,until边界值包前不包后,to两边边界都会包进去
5. try..catch..finally
import java.io.{FileNotFoundException, FileReader}
object ScalaApp extends App {
try {
val reader = new FileReader("wordCount.txt")
} catch {
case ex: FileNotFoundException =>
ex.printStackTrace()
println("没有找到对应的文件!")
} finally {
println("finally 语句一定会被执行!")
}
}
//finally 语句一定会被执行,所以不要在该语句中返回值,否则返回值会被作为整个 try 语句的返回值
6. 条件选择表达式match
object ScalaApp extends App {
val elements = Array("A", "B", "C", "D", "E")
for (elem <- elements) {
elem match {
case "A" => println(10)
case "B" => println(20)
case "C" => println(30)
case _ => println(50)
}
}
val elements = Array("A","B","C","D","E")
for (element <- elements) {
var score = element match {
case "A" => 90
case "B" => 80
case "C" => 70
case "D" => 60
case _ => 50
}
print(element + ":" + score)
}
}
特性
1. Scala 中的 case 语句支持任何类型;
2.Scala 中每个分支语句后面不需要写 break,因为在 case 语句中 break 是隐含的,默认就有;
3.在 Scala 中 match 语句是有返回值的,而 Java 中 switch 语句是没有返回值的。
=>
用法
1.在模式匹配 match 和 try-catch 都用 “=>” 表示输出的结果或返回的值
2.表示函数的返回类型(Function Type)
3.匿名函数 匿名函数定义,=>左边是参数 右边是函数实现体 (x: Int)=>{}
4.By-Name Parameters(传名参数)
7.没有break和continue
Scala 中并不支持 Java 中的 break 和 continue 关键字
8.输入与输出
在 Scala 中可以使用 print、println、printf 打印输出。如果需要从控制台中获取输入,则可以使用 StdIn 中定义的各种方法。
val name = StdIn.readLine("Your name: ")
print("Your age: ")
val age = StdIn.readInt()
println(s"Hello, ${name}! Next year, you will be ${age + 1}.")