Scala-closures
提供:Dev Guides
Scala-クロージャー
匿名関数を使用した次のコード。
ここで、関数本体で使用される唯一の変数i* 10は、関数のパラメーターとして定義されているiです。 次のコードを試してください-
乗数には、 i と factor の2つの自由変数があります。 その1つであるiは、関数の正式なパラメーターです。 したがって、乗数が呼び出されるたびに新しい値にバインドされます。 ただし、 factor は正式なパラメーターではありませんが、これは何ですか? もう1行コードを追加しましょう。
これで、 factor には、関数の外側であるが外側のスコープ内の変数への参照があります。 関数は factor を参照し、そのたびに現在の値を読み取ります。 関数に外部参照がない場合、関数はそれ自体で簡単に閉じられます。 外部コンテキストは必要ありません。
次のプログラム例を試してください。
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。