Monday, September 19, 2016

Calling a Function : Special Forms : Repeated Parameters, Named Arguments & Default Values...

scala> //Special Call forms #194

scala> //Example 1 : Repeated Parameters

scala> def demo(args: String*) = {
     |    for(arg <- args) {
     |       println("arg -> " + arg)
     |    }
     | }
demo: (args: String*)Unit

scala>

scala> demo("this", "is", "scala")
arg -> this
arg -> is
arg -> scala

scala>

scala> //Passing an array will give compilation error

scala> val arr = Array("This", "is", "scala")
arr: Array[String] = Array(This, is, scala)

scala> demo(arr)
<console>:13: error: type mismatch;
 found   : Array[String]
 required: String
              demo(arr)
                   ^

scala>

scala> //But, Array can be passed like this

scala> demo(arr: _*)
arg -> This
arg -> is
arg -> scala

scala>

scala>

scala> //Example 2 : Named arguments

scala> def fn1(firstArg: String, secondArg: String) = {
     |    println("firstArg -> " + firstArg + ", secondArg -> "
     |                                        + secondArg)
     | }
fn1: (firstArg: String, secondArg: String)Unit

scala>

scala> fn1(secondArg = "scala", firstArg = "hello")
firstArg -> hello, secondArg -> scala

scala>

scala> //Example 3 : Defaul Parameter Values

scala> def fn2(firstArg: String = "HELLO", secondArg: String) = {
     |    println("firstArg -> " + firstArg + ", secondArg -> "
     |                                        + secondArg)
     | }
fn2: (firstArg: String, secondArg: String)Unit

scala>

scala> fn2(secondArg = "Scala")
firstArg -> HELLO, secondArg -> Scala