2016-12-26 8 views
1

私はScalaのさまざまなデータ構造に慣れてきましたが、私はこの関数(考えられた例)が気づいています。これは可変配列のすべての文字を一つは、配列に影響を及ぼさない。Scala:配列内の要素をシフト

ABCD 

が予期しない結果を生成

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) 

AABC 
+0

'-1' –

+0

あるいはさらに良いことで0がより明示的な'私は<使用するまで - レンジ(= chars.lengthを開始 - 1、終わりを= 0、step = -1) ' –

答えて

4

範囲のデフォルトステップは1です。クラスRangehereを参照してください。暗黙のうちにhereになります。
代わりの

for(i <- chars.length - 1 until 0)... 

あなたが必要とする:

for(i <- chars.length - 1 until 0 by -1)... 
関連する問題