Scala匹配模式---Case 类匹配

让我们来尝试一次深度匹配,在我们的模式匹配中检查对象的内容。

//code-examples/Rounding/match-deep-script.scala

case class Person(name: String, age:Int)  

val alice = new Person("Alice",25)  

val bob = new Person("Bob",32)  

val charlie = newPerson("Charlie", 32)  

   

for (person <- List(alice, bob,charlie)) {   

    person match {

        case Person("Alice", 25) => println("HiAlice!")  

        case Person("Bob", 32) => println("Hi Bob!")  

        case Person(name, age) => println("Who are you, " + age +" year-old person named " + name + "?")  

    }  

}

从上面例子的输出中我们可以看出,可怜的Charlie 被无视了:

?

1

2

3       HiAlice!   

Hi Bob!  

Who are you, 32 year-old person namedCharlie?

我们收线定义了一个case 类,一个特殊类型的类,我们会在《第6 - Scala 高级面向对象编程》的“Case 类”章节中学到更多细节。现在,我们只需要知道,一个case 类允许精炼的简单对象的构造,以及一些预定义的方法。然后,我们的模式匹配通过检查传入的Person case 类的值来查找Alice BobCharlie 则直到最后那个饥不择食的case 才被捕获;尽管他和Bob 有一样的年龄,但是我们同时也检查了名字属性。

我们后面会看到,这种类型的模式匹配和Actor 配合工作时会非常有用。Case 类经常会被作为消息发送到Actor,对一个对象的内容进行深度模式匹配是“分析”这些消息的方便方式。

更多精彩内容请关注:http://bbs.superwu.cn

关注超人学院微信二维码:145347_Vwzy_2273204.jpg

转载于:https://my.oschina.net/crxy/blog/411808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值