2016-04-04 7 views
2

もう一度簡単な質問。scala:クロージャーで不変型を適用する

どのようにして不変型から来るはずですか?以下の関数/クロージャではどうすれば指定できますか?

他の賢明な私は以下のような副作用があります!

おかげ

var more = 3 

def increase[T: Numeric](x: T): T = implicitly[Numeric[T]].plus(x, more.asInstanceOf[T]) 

val inc = increase[Int] _ 

more = 10 

println(inc(5)) 

答えて

5

わからないことは、あなたが探しているものだが、あなたが特定のポイントの後に変更されない関数で使用される値を確認したい場合、あなたは別個のものとしてそれを追加することができますその値で関数を部分的に適用します。

var more = 3 

def increase[T: Numeric](base: T)(x: T): T = implicitly[Numeric[T]].plus(x, base) 

val inc = increase[Int](more) _ 

more = 10 

println(inc(5)) // prints 8, as expected 
+0

これは私が探しているものです。実装が少し異なります。しかし、これはそれです!ありがとう – Pavel

関連する問題