Scala:移动数组中的元素

Cal*_*000 1 arrays scala

我已经习惯了 Scala 中的各种数据结构,我注意到这个函数(人为的例子)应该将可变数组中的每个字符向右移动一个,对数组没有影响:

  def shiftRight(str: String): Array[Char] = {
    val chars = str.toCharArray
    for(i <- chars.length - 1 until 0) chars(i) = chars(i - 1)
    chars
  }
  println(shiftRight("ABCD").mkString)
Run Code Online (Sandbox Code Playgroud)

产生结果

ABCD
Run Code Online (Sandbox Code Playgroud)

不是预期的

AABC
Run Code Online (Sandbox Code Playgroud)

ins*_*n-e 5

范围的默认步长为 1。请参阅Range 此处的class和使您在此处获得它的隐式。
代替

for(i <- chars.length - 1 until 0)...
Run Code Online (Sandbox Code Playgroud)

你需要:

for(i <- chars.length - 1 until 0 by -1)...
Run Code Online (Sandbox Code Playgroud)