我已经习惯了 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)
范围的默认步长为 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)