目录
Scala 中常用的控制结构包括 if-else
、for
、while
和 match
等。
1.if-else选择结构条件表达式
if-else
选择结构在 Scala 中和其它语言中的用法类似,例如:
val x = 10
if (x > 5) {
println("x is greater than 5")
} else {
println("x is less than or equal to 5")
}
在这个示例中,首先定义了一个整型变量 x
,然后使用 if-else
结构判断 x
是否大于 5,如果大于 5,输出 "x is greater than 5",否则输出 "x is less than or equal to 5"。需要注意的是,Scala 的 if-else
结构返回的是一个值,可以赋给一个变量。
2.for循环结构条件表达式
在 Scala 中,for
循环可以用于迭代不同种类的集合,如 List、Set、Map 等,语法为:
for (variable <- sequence) {
statement(s)
}
以下是迭代 List 的示例:
val list = List(1,2,3,4,5)
for (num <- list) {
println(s"element is $num")
}
在这个示例中,首先定义了一个名为 list
的 List,然后使用 for
循环来迭代 list
中的元素,每次迭代输出 list
中的当前元素。
3.while循环结构条件表达式
在 Scala 中,while
循环用于每次检测循环条件是否为真。其语法与其它语言中的 while
循环类似:
while (condition) {
statement(s)
}
以下是简单的 while 循环示例:
var x = 0
while (x < 10) {
println(s"x is currently $x")
x += 1
}
在这个示例中,首先定义了一个整型变量 x
,然后使用 while
循环检测 x
是否小于 10,如果满足条件,则打印 x 的当前值,并且 x 的值加 1,继续下一次循环。
4.match模式匹配
match
语句用于模式匹配,其语法与其它语言中的 case 语句类似。match
语句可以根据某个值来匹配不同的模式,并执行相应的代码块。
以下是 match
语句的示例:
val i = 5
i match {
case 1 => println("one")
case 2 => println("two")
case _ => println("other")
}
在这个示例中,首先定义了一个整型变量 i
,然后使用 match
语句进行匹配,如果 i
的值为 1,则输出 "one",如果值为 2,则输出 "two",如果值不是 1 或 2,则输出 "other"。
match
语句还可以与 case
和 if
结合使用。可以使用 case
语句来匹配某个值,如果匹配成功,则执行相应的代码块;可以使用 if
语句来进一步判断某个条件是否成立,如果成立则执行代码块。
5.Scala异常处理结构
在 Scala 中,异常处理使用 try-catch-finally 语句结构。try 包含需要监视异常的代码段,catch 包含处理异常的代码段,而 finally 则包含此代码段中必须执行的语句。
以下是 try-catch-finally 结构的示例:
try {
// 监视异常的代码段
} catch {
case ex: Exception => {
// 处理异常的代码段
}
} finally {
// 必须执行的代码段
}
在上面的示例中,try 包含需要监视异常的代码段,在发生异常时,catch 中定义的代码段会被执行来处理异常。在 catch 代码段中,可以使用 case 模式匹配来匹配具体的异常类型, ex
是捕获到的异常对象的名称。在 finally 包含的代码段中,必须执行无论是否发生异常都会执行的代码段。
以下是一个完整的异常处理结构的示例:
try {
val a = 10/0
} catch {
case ex: ArithmeticException => {
println("ArithmeticException Caught")
}
case ex: Exception => {
println("Other Exception Caught")
}
} finally {
println("finally block will always execute")
}
在这个示例中,首先尝试将 10 除以 0,这是一个会产生 ArithmeticException 的操作。当出现异常时,会执行 catch 块。在 catch 代码段中,使用模式匹配来匹配所有可能的异常类型,如果匹配到 ArithmeticException,则输出 "ArithmeticException Caught",否则匹配到其他异常类型,输出 "Other Exception Caught"。无论是否发生异常,finally 中包含的代码段都会执行,并且输出 "finally block will always execute"。
6.Scala循环控制
Scala 中,与Java类似可以用break 和 continue 等关键字用于控制循环的执行,但要注意需要调用名为Breaks的类来实现类似功能。
1.break
break 关键字用于立即终止循环,并将控制转移给循环外的下一段代码。
以下是 break 关键字的示例:
import scala.util.control.Breaks._
breakable {
for (i <- 1 to 10) {
if (i == 5) break
println(i)
}
}
在这个示例中,使用 breakable 包含整个 for 循环,当变量 i 等于 5 时,使用 break 终止循环并跳出 breakable。
2.continue
continue 关键字用于跳过当前迭代,并执行下一个迭代。
以下是 continue 关键字的示例:
for (i <- 1 to 10) {
if (i == 5) continue
println(i)
}
在这个示例中,当 i 等于 5 时,使用 continue 跳过当前迭代,执行下一个迭代。