コンパニオンオブジェクトを理解しようとしている間に、クラスがインスタンス化された回数を数える次のコードを記述しました。私はカウントを維持するために 'var'を使用しなければならなかった。同じタスクを達成する、すなわち不変の変数を使用するための「関数型プログラミング」方法がありますか?変更可能な変数や他の副作用を回避する純粋に機能的なプログラムの大きな特性の関数のプログラミング方法でカウンタを実装する方法
class C {
C.counter+=1
def someCFunction = {println ("some C function. Counter is "+C.counter)}
}
object C{
var counter:Int=0 //I do not want to use var
}
val c1 = new C
c1.someCFunction
val c2 = new C
c2.someCFunction
FunctorsまたはState Monadが適切であるようです – naomik