First let's take a look at type matching:
scala> def replyMessage(message:Any): Any = message match {
| case s:String => "Your message is the string " + s
| case i:Int => "Your message is the number " + i
| case _ => "Your message is of unknown type"
| }
replyMessage: (message: Any)Any
scala> replyMessage("Hello world")
res1: Any = Your message is the string Hello world
scala> replyMessage(5)
res2: Any = Your message is the number 5
scala> replyMessage(true)
res3: Any = Your message is of unknown type
Next let's take a look regular pattern matching using Fibonacci as an example
scala> def fibonacci(n: Int): Int = n match {
| case 0 => 0
| case 1 => 1
| case _ => fibonacci(n-2) + fibonacci(n-1)
| }
fibonacci: (n: Int)Int
scala>
scala> (for (n <- 0 to 10) yield fibonacci(n)).toList
res15: List[Int] = List(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55)
Also the if-else construct returns a value
scala> val fname = "Robby"
fname: java.lang.String = Robby
scala> if (fname.startsWith("B")) "Your name does start with B" else "Hey Mr R"
res19: java.lang.String = Hey Mr R
As a rule of thumb, just remember that you can omit the return statement. Scala will return the last expression in a block statement.
scala> def someComplexMethod(n: Int): Int = {
| val x = "blabla"
| n * 2
| }
someComplexMethod: (n: Int)Int
scala>
scala> someComplexMethod(3)
res22: Int = 6
No comments:
Post a Comment