Scalaには(可変状態の場合)があることは知っていvar
ますが、純粋関数型プログラミングは可変状態の使用を思いとどまらせ、むしろすべてに使用することに焦点を合わせてval
います。
命令型の世界から来て、可変状態を手放すことは難しいです。
私の質問は、Scalaコードでvarを使用しても大丈夫なのはいつですか?すべてのコードは、実際にはvalだけを使用して実行できますか。はいの場合、Scalaに変数があるのはなぜですか?
Scalaには(可変状態の場合)があることは知っていvar
ますが、純粋関数型プログラミングは可変状態の使用を思いとどまらせ、むしろすべてに使用することに焦点を合わせてval
います。
命令型の世界から来て、可変状態を手放すことは難しいです。
私の質問は、Scalaコードでvarを使用しても大丈夫なのはいつですか?すべてのコードは、実際にはvalだけを使用して実行できますか。はいの場合、Scalaに変数があるのはなぜですか?
Scalaでvarsを使用する理由は次のとおりです。
関数型プログラミングの観点からも、変数(または可変オブジェクト)が定義されているスコープを離れない場合は、ローカルで変数(または可変オブジェクト)を使用できます。
たとえば、リストのサイズを返すこの(考案された)関数について考えてみます。
def dumbSize( lst: List[Int] ): Int = {
var i = 0
var rest = lst
while( rest != Nil ) {
i += 1
rest = rest.tail
}
i
}
この(醜い)関数はvarsを使用しますが、それでも純粋です(副作用はなく、指定された引数値に対して常に同じ結果を返します)。
「可変状態カプセル化」の別の例は、アクターモデルであり、アクター状態はしばしば可変です。