在Scala中获取参数列表中数组的长度

时间:2018-06-21 12:58:44

标签: arrays scala

我想在参数列表中使用提供的数组长度。我尝试过

def find(xs: Array[Double], m:Int = xs.length*2) = ???

,但 m 参数无法访问xs。 有可能这样做吗?怎么样?

2 个答案:

答案 0 :(得分:2)

定义参数的默认值时,只能引用先前参数列表中的变量。因此,您需要两个参数列表:

def find(xs: Array[Double])(m: Int = xs.size * 2) = ???

然后您可以按以下方式调用它:

find(Array(1, 2, 3))(6)

find(Array(1, 2, 3))()

答案 1 :(得分:0)

在这种情况下,一个丑陋的选择是使用无效的长度作为默认值:

def find(xs: Array[Double], _m: Int = -1) = {
  val m = if (_m >= 0) _m else xs.length