首页 / SCALA / scala编程之模式匹配和异常处理
scala编程之模式匹配和异常处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了scala编程之模式匹配和异常处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2884字,纯文字阅读大概需要5分钟。
内容图文
package com.lyzx.day20181006
import java.io.{FileNotFoundException, FileReader, IOException}
class MatchTest {
/**
* match 对应 Java 里的 switch,但是写在选择器表达式之后。即: 选择器 match {备选项}。
* match 表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现有一个匹配的case,
* 剩下的case不会继续匹配。
* f1 和 f2 方法演示
* @param x
* @return
*/
def f1(x:Any): String = x match{
case 1 => "one"
case 2 => "two"
case 3 => "three"
case _ => "many"
}
def f2(x:Any): String ={
val result =
x match {
case 1 => "one"
case 2 => "two"
case 3 => "three"
case _ => "many"
}
"最终结果为:"+result
}
/**
* 使用了case关键字的类定义就是就是样例类(case classes),样例类是种特殊的类,经过优化以用于模式匹配。
*/
def f3(): Unit ={
val tom = new Person("tom",22)
val jack = new Person("jack",55)
val pony = new Person("pony",54)
val robin = new Person("robin",53)
for(item <- List(tom,jack,pony,robin)){
item match {
case Person("tom",age) => println("你好,tom age="+age)
case Person("jack",55) => println("你好Jack")
case Person(name,age) => println("你好,陌生人,name["+name+"],age["+age+"]")
}
}
}
/**
* case class 和普通class 的区别
*
*/
def f4(): Unit ={
//1、实例化的时候case class可以不加new 可以加上,但是普通class必须加new关键字
val people1 = new People("lyzx",22)
val people2 = new People("lyzx",22)
val person1 = Person("lyzx",22)
val person2 = Person("lyzx",22)
//2、toString的实现更漂亮
println(people1) //com.lyzx.day20181006.People@66d33a
println(person1) //Person(lyzx,22)
//3、默认实现了equals 和hashCode
println("普通类的equals:"+people1.equals(people2)) //false
println("case类的equals:"+person1.equals(person2)) //true
//4、case类实现了Serializable接口
val people1IsSerializable = people1.isInstanceOf[Serializable]
val person1IsSerializable = person1.isInstanceOf[Serializable]
println("普通类是否实现了Serializable接口: "+people1IsSerializable)
println("case类是否实现了Serializable接口: "+person1IsSerializable)
//5、case class构造函数的参数是public级别的,我们可以直接访问
println(person1.age)
//6、支持匹配模式 在f3方法中可以看到
}
/**
* 异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。
* 因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后。
* 如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。
* 捕捉异常的catch子句,语法与其他语言中不太一样。
* 在Scala里,借用了模式匹配的思想来做异常的匹配,
* 因此,在catch的代码里,是一系列case字句,
* finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤
*/
def f5(): Unit ={
try{
val f = new FileReader("111")
} catch {
case e : FileNotFoundException => {
e.printStackTrace()
println("文件未找到异常")
}
case e : IOException =>{
e.printStackTrace()
println("IO异常")
}
}finally{
println("i am finally's context")
}
}
}
case class Person(name:String,age:Int)
class People(name:String,age:Int)
object MatchTest{
def main(args: Array[String]): Unit = {
val t = new MatchTest
// println(t.f2(2))
// t.f3()
// t.f4()
t.f5()
}
}
内容总结
以上是互联网集市为您收集整理的scala编程之模式匹配和异常处理全部内容,希望文章能够帮你解决scala编程之模式匹配和异常处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。