abstract class Dickmacher case class Beverage (name: String, cal: Int) extends Dickmacher case class Food (name: String, cal: Int) extends Dickmacher case class Meal (name: String, food: Food, drink: Beverage) extends Dickmacher case class Combo (starter: Dickmacher, main: Dickmacher) extends Dickmacher def drink(bev: Beverage) : Unit = { bev match { case Beverage("Kaffee", 30) => println("Zucker und Milch fehlen") case Beverage(_, c) if c < 50 => println("Mehr Kalorien") case Beverage(n, c) if c < 100 => println(n + " hat zu wenig Kalorien: " + c) case Beverage("Cola", 400) => println("Ahhh") case _ => println("Bäh!") } } def eat(bev: Meal) : Unit = { bev match { case Meal(_, Food(_, a), Beverage("Coke", b)) if a >= 400 && b >= 100 => println("Haben wollen!") case _ => println("Bäh!") } } println(drink(Beverage("Kaffee", 30))) println(drink(Beverage("Tee", 10))) println(drink(Beverage("Cola Light", 50))) println(drink(Beverage("Cola", 40))) println(drink(Beverage("Saft", 500))) eat(Meal("Uschi's Fried Chicken", Food("Chicken", 600), Beverage("Coke Zero", 0))) eat(Meal("Uschi's Fried Chicken+", Food("Chicken", 600), Beverage("Coke", 100)))
Friday, September 28, 2012
Pattern Matching Case Classes
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment