Slide 76
Slide 76 text
ϓ ϥ ϯ Λ ૿ ͢
1 case class User(name: String, age: Int)
2
3 trait Plan
4 case class Free(user: User) extends Plan
5 case class Premium(user: User) extends Plan
6 case class Campaign(user: User) extends Plan
7
8 val userA = Free(User("Taro", 23))
9 val userB = Premium(User("Jiro", 25))
10 val userC = Campaign(User("Saburo", 28))
11
12 Seq(userA, userB, userC) foreach {
13 case Free(User(name, _)) => println(s"Hi, $name.")
14 case Premium(User(name, _)) => println(s"Hello, $name!")
15 }
16 // => Hi, Taro.
17 // => Hello, Jiro!
18 // => scala.MatchError: Campaign(User(Saburo,28)) …