Scala - while循环到for-comprehension

时间:2017-06-23 22:05:58

标签: scala

是否可以实现与

相同的功能
def filler(input: Array[Float], output: Array[Float]): Unit = {
    var maxValue:Float = 0
    var idx:Int = 1

    output(0)= input(0)
    while(idx < input.length) {
        output(idx) = max(input(idx)/idx,maxValue)
        maxValue = output(idx)
        idx = idx + 1
    }
}

借助于理解,或在其他任何&#34;功能性&#34;中重写它。方式是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

def filler(input: Array[Float]): Array[Float] = {
  input.zipWithIndex.scanLeft(0.0f) {
    case (maxValue, (x, i)) => max(x/Math.max(1, i), maxValue)
  }.tail
}