原谅如果这是一个问题的基本原因,我对scala很新,并且特别陷入困境。
我想要实现的是拥有一个将数组作为参数的函数,如下所示:
evenOdd(1,2,3,4,5,6); //where evenOdd is my function
函数定义如下:
def evenOdd(x : Array[Int] = new Array[Int](6)){
}
它会抛出一个错误,即该函数的参数太多。如何在函数中实现将多个数组整数作为固定大小传递?
答案 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
接受一个整数数组。
您有两种方法可以解决这个问题:
使evenOdd
函数接受整数的varargs。这样做的缺点是您无法为此分配默认值:
def evenOdd(x : Int*)
不要更改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))
}
}
}