Latest web development tutorials

Scalaのクロージャ

Scalaの機能 Scalaの機能

クロージャは、関数内の外部宣言または複数の変数に依存する値を返す関数です。

一般的には関数内だけで別の関数であると考えられてクロージャはローカル変数にアクセスすることができます。

次のようにこの無名関数:

val multiplier = (i:Int) => i * 10  

関数本体は関数のパラメータとして、変数iを持っています。 次のようなコードの別の部分:

val multiplier = (i:Int) => i * factor

乗算器内の2つの変数があります:iと要因。 私は、関数の仮パラメータである場合、乗算器、私は新たな価値を与えられたときに、関数が呼び出されます。 ただし、要因は、正式なパラメータではありませんが、自由変数は、以下のコードを考えてみます。

var factor = 3  
val multiplier = (i:Int) => i * factor  

ここでは、この変数は関数の外で定義され、自由な変動要因をご紹介します。

このように「閉鎖」と定義乗数の関数変数、それは関数定義外の変数を参照するため、この機能のプロセスの定義は、自由変数が閉じた機能を構成キャプチャすることです。

完全な例

object Test {  
   def main(args: Array[String]) {  
      println( "muliplier(1) value = " +  multiplier(1) )  
      println( "muliplier(2) value = " +  multiplier(2) )  
   }  
   var factor = 3  
   val multiplier = (i:Int) => i * factor  
}  

実行中のインスタンス»

上記のコードの実装、出力は次のようになります。

$ scalac Test.scala  
$  scala Test  
muliplier(1) value = 3  
muliplier(2) value = 6  

Scalaの機能 Scalaの機能