JavaのようにScala(2.8)を書く程度を減らそうとしています。ここに私が遭遇した問題の単純化があります。あなたは私のソリューションで「より機能的」な改善を提案できますか?スカラ、私のループをより機能的にする
彼らはまず
var outputMap = new mutable.HashMap[Char,Int]()
var counter = 0
for(kvp <- inputMap){
val character = kvp._2
if(character !='z' && !outputMap.contains(character)){
outputMap += (character -> counter)
counter += 1
}
}
2回目の試行(あまり良くないを試してみてください
に遭遇しているとして、「Z」値を持つ任意のエントリを破棄することによってマップ
val inputMap = mutable.LinkedHashMap(1->'a',2->'a',3->'b',4->'z',5->'c')
を変換した文字のインデックスを作成します不変のマップと「foreach」を使用)
var outputMap = new immutable.HashMap[Char,Int]()
var counter = 0
inputMap.foreach{
case(number,character) => {
if(character !='z' && !outputMap.contains(character)){
outputMap2 += (character -> counter)
counter += 1
}
}
}
としてそれを呼び出すと思います!すべての要件をコンパクトでわかりやすい方法で満たします。 (個人的には、フィルタリングする前にマップしますが、これはほとんど問題ありません) –