Scala 流程控制语句

编程入门 行业动态 更新时间:2024-10-09 12:32:16

Scala 流程控制<a href=https://www.elefans.com/category/jswz/34/1770772.html style=语句"/>

Scala 流程控制语句

1. 条件表达式if

Scala 中的 if/else 语法结构与 Java 中的一样,唯一不同的是,Scala 中的 if 表达式是有返回值的。

object ScalaApp extends App {val x = "scala"val result = if (x.length == 5) "true" else "false"
  print(result)}

在 Java 中,每行语句都需要使用 `;` 表示结束,但是在 Scala 中并不需要。除非你在单行语句中写了多行代码。

2. 块表达式

在 Scala 中,可以使用 `{}` 块包含一系列表达式,块中最后一个表达式的值就是块的值。

object ScalaApp extends App {val result = {val a = 1 + 1; val b = 2 + 2; a + b}
  print(result)
}// 输出: 6

如果块中的最后一个表达式没有返回值,则块的返回值是 Unit 类型。

scala> val result ={ val a = 1 + 1; val b = 2 + 2 }
result: Unit = ()

3. 循环表达式while

Scala 和大多数语言一样,支持 `while` 和 `do ... while` 表达式。

object ScalaApp extends App {var n = 0while (n < 10) {
    n += 1
    println(n)}// 循环至少要执行一次do {
    println(n)} while (n > 10)
}

4. 循环表达式for

for 循环的基本使用如下:

object ScalaApp extends App {// 1.基本使用  输出[1,9)for (n <- 1 until 10) {print(n)}// 2.使用多个表达式生成器  输出: 11 12 13 21 22 23 31 32 33for (i <- 1 to 3; j <- 1 to 3) print(f"${10 * i + j}%3d")// 3.使用带条件的表达式生成器  输出: 12 13 21 23 31 32for (i <- 1 to 3; j <- 1 to 3 if i != j) print(f"${10 * i + j}%3d")}

除了基本使用外,还可以使用 `yield` 关键字从 for 循环中产生 Vector,这称为 for 推导式。

scala> for (i <- 1 to 10) yield i * 6
res1: scala.collection.immutable.IndexedSeq[Int] = Vector(6, 12, 18, 24, 30, 36, 42, 48, 54, 60)

5. 异常处理try

和 Java 中一样,支持 `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 语句的返回值,如下:

scala> def g():Int = try return 1 finally  return  2
g: ()Int// 方法 g() 总会返回 2
scala> g()
res3: Int = 2

6. 条件选择表达式match

match 类似于 java 中的 switch 语句

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)}}
}

但是与 Java 中的 switch 有以下三点不同:

Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常量;

Scala 中每个分支语句后面不需要写 break,因为在 case 语句中 break 是隐含的,默认就有;

在 Scala 中 match 语句是有返回值的,而 Java 中 switch 语句是没有返回值的。如下:

object ScalaApp extends App {val elements = Array("A", "B", "C", "D", "E")for (elem <- elements) {val score = elem match {case "A" => 10case "B" => 20case "C" => 30case _ => 50}
    print(elem + ":" + score + ";")}
}
// 输出: A:10;B:20;C:30;D:50;E:50;

7. 没有break和continue

额外注意一下:Scala 中并不支持 Java 中的 break 和 continue 关键字。

8. 输入与输出

在 Scala 中可以使用 print、println、printf 打印输出,这与 Java 中是一样的。如果需要从控制台中获取输入,则可以使用 `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}.")

更多推荐

Scala 流程控制语句

本文发布于:2023-11-17 04:37:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1639170.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语句   流程   Scala

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!