diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2013-04-28 00:08:00 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2016-11-10 18:03:23 +0100 | 
| commit | 765ddc9e51305d6ba703666f42e67ae3fcc91058 (patch) | |
| tree | 8ea500a737d8b80f3219a87aeea195ca461a6c09 /Scala/sandbox | |
| parent | 82dc27578a2f57646f5b8c678699980b29b89c11 (diff) | |
| download | coursera-765ddc9e51305d6ba703666f42e67ae3fcc91058.zip coursera-765ddc9e51305d6ba703666f42e67ae3fcc91058.tar.gz  | |
Scala : sandbox Scala : add 8-pattern-matching
Diffstat (limited to 'Scala/sandbox')
| -rw-r--r-- | Scala/sandbox/0-main.scala | 1 | ||||
| -rw-r--r-- | Scala/sandbox/8-pattern-matching.scala | 29 | 
2 files changed, 30 insertions, 0 deletions
diff --git a/Scala/sandbox/0-main.scala b/Scala/sandbox/0-main.scala index 6f0edf3..b68b57e 100644 --- a/Scala/sandbox/0-main.scala +++ b/Scala/sandbox/0-main.scala @@ -10,5 +10,6 @@ object Main  extends App {      IntList.run      Natural.run      Variance.run +    PatternMatching.run  } diff --git a/Scala/sandbox/8-pattern-matching.scala b/Scala/sandbox/8-pattern-matching.scala new file mode 100644 index 0000000..36beb68 --- /dev/null +++ b/Scala/sandbox/8-pattern-matching.scala @@ -0,0 +1,29 @@ +object PatternMatching +{ +  trait Expr { +    def eval: Int = this match { +      case Number(n) => n +      case Sum(e1, e2) => e1.eval + e2.eval +    } +    def show: String = this match { +      case Number(n) => n.toString +      case Sum(e1, e2) => e1.show + " + " + e2.show +    } +  } + +  case class Number(n: Int) extends Expr +  case class Sum(e1: Expr, e2: Expr) extends Expr + + +  def eval1(e: Expr): Int = e match { +    case Number(n) => n +    case Sum(e1, e2) => eval1(e1) + eval1(e2) +  } + +  def run = { +    println("PatternMatching") +    println( eval1(Sum(Number(1), Number(2))) ) +    val e = Sum(Number(1), Number(2)) +    println( e.show + " = " + e.eval ) +  } +}  | 
