1. 程式人生 > >Scala變長引數

Scala變長引數


變長引數
        在Scala中,有時我們需要將函式定義為引數個數可變的形式,則此時可以使用變長引數定義函式。 

   def sum(nums: Int*) = {
      var res = 0
      for (num <- nums) res += num
      res
    }

    sum(1, 2, 3, 4, 5)


使用序列呼叫變長引數
        在如果想要將一個已有的序列直接呼叫變長引數函式,是不對的。比如val s = sum(1 to 5)。
        此時需要使用Scala特殊的語法將引數定義為序列,讓Scala直譯器能夠識別。
        這種語法非常有用!一定要好好主意,在spark的原始碼中大量地使用到了。

    val s = sum(1 to 5: _*)

    案例:使用遞迴函式實現累加

  

  def sum2(nums: Int*): Int = {
      if (nums.length == 0) 0
      else nums.head + sum2(nums.tail: _*)
    }