如何将数组作为参数传递给Scala中的函数?

时间:2017-09-07 03:36:12

标签: scala

原谅如果这是一个问题的基本原因,我对scala很新,并且特别陷入困境。

我想要实现的是拥有一个将数组作为参数的函数,如下所示:

 evenOdd(1,2,3,4,5,6);  //where evenOdd is my function

函数定义如下:

def evenOdd(x : Array[Int] = new Array[Int](6)){

}

它会抛出一个错误,即该函数的参数太多。如何在函数中实现将多个数组整数作为固定大小传递?

3 个答案:

答案 0 :(得分:5)

Array传递给evenOdd

evenOdd(Array(1, 2, 3, 4, 5, 6))

或将evenOdd定义为:

def evenOdd(x: Int*) = {...}

答案 1 :(得分:1)

你传递的是varargs(read more about it here)。但是,函数evenOdd接受一个整数数组。

您有两种方法可以解决这个问题:

  1. 使evenOdd函数接受整数的varargs。这样做的缺点是您无法为此分配默认值:

    def evenOdd(x : Int*)

  2. 不要更改evenOdd的输入参数,而是传入一个整数数组:

    evenOdd(Array(1,2,3,4,5,6))

答案 2 :(得分:0)

  

检查是将传递的数组作为参数的示例

object ArrayRotation {
  def main(args: Array[String]) {
    var arr = Array(1, 2, 3, 4, 5, 6, 7)

    call(arr)
  }
  def call(arr: Array[Int]) {
    for (i <- 0 to 1) {
      for (j <- 0 to arr.length - 2) {
        var temp = arr(j)
        arr(j) = arr(j + 1)
        arr(j + 1) = temp

      }

    }
    for (i <- 0 to arr.length - 1) {
      print(arr(i))
    }
  }

}