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