我想在参数列表中使用提供的数组长度。我尝试过
def find(xs: Array[Double], m:Int = xs.length*2) = ???
,但 m 参数无法访问xs。 有可能这样做吗?怎么样?
答案 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