私は Scala で遊んでコツをつかもうとしているので、このコード サンプルは単なる学術的なものです。
変更可能なリストを関数に渡して、その関数に作業を実行させようとしています。関数呼び出しの後、更新されたリストを使用できます。
var data: List[Int] = List()
// Call to function to fill a list
data = initList(data)
// Output only 0-100
data.foreach( num => if (num < 100) { println(num) })
def initList(var data: List[Int]) : List[Int] = {
for ( i <- 0 to 1000 )
{
data = i :: data
}
data = data.reverse
data
}
コンパイルされない上記の唯一のコードはvar
indef initList()
であり、 data が であるためval
、関数内で I に変更を加えることはできません。
まず、Scala では、ミューテーターは通常嫌われていることを知っていると言っておきましょう。そのため、質問に対する直接的な回答だけでなく、それを完全に行うためのより良い方法にもオープンです。プロジェクトでは、データの一部があちこちに移動して更新されることがありますが、データを関数に渡して変更できない場合は、どのような代替手段がありますか?
私はチュートリアルを読み、これについてグーグルで検索しましたが、Scalaでは通常このように行われないため、それについて多くを見つけることができないと思います.