try表达式
try表达式的语意与java中try…catch…finally是一样的。
但是try在scala中不是一个语句,而是一个表达式,会返回一个值。
首先看下面这个例子:
val result_try = try {
Integer.parseInt("Dog")
} catch {
case _ => 0
} finally {
println("always be printed")
}
⚠️case _ => 0 中的下划线是通配符,可以通配所有对象。
- Integer.parseInt(“Dog”)要把字符串"Dog"转换成int,显然回抛出异常。
- 抛出异常后,就要进入catch。 case _ => 0中下划线这个通配符保证无论抛出什么异常,都可以被catch到,同时返回0。
- finally和java中的语意是一样的——无论有没有抛出异常,都会执行finally这个代码块,永远会输出"always be printed"。
代码:
package com.leili.scala
object Demo {
def main(args: Array[String]): Unit = {
val result_try = try {
Integer.parseInt("Dog")
} catch {
case _ => 0
} finally {
println("always be printed")
}
}
}
输出:
always be printed
match 表达式
例如:
exp macth{ //主要用在pattern match中
case p1 => val1
case p2 => val2
...
case _=> valn
}
- 如果表达式可以匹配上 p1,就会返回val1;
⚠️如果没有匹配上p1,就会去匹配p2 - 如果表达式可以匹配上 p2,就会返回val2;
⚠️以此类推,如果前面的都没匹配上,就会去匹配case _ ,返回valn。
⚠️ “_”是通配符,可以匹配任何对象。
代码:
package com.leili.scala
object Demo {
def main(args: Array[String]): Unit = {
val code = 1
val result_match = code match{
case 1=>"one"
case 2=>"two"
case _ =>"n"
}
println(result_match)
}
}
输出:
one