==[[クロージャ]](Closure)==
http://martinfowler.com/bliki/Closure.html
クロージャとは、関数に、引数として渡せるコードブロック。[[クロージャ]]とは、関数に、引数として渡せるコードブロック。EmployeeからManagerを抜き出すには、C#(クロージャを持たない[[クロージャ]]を持たない)では、以下のようにするだろう
public static IList Managers(IList emps) {
return result;
}
クロージャを持つ、Rubyなら以下のようにする。[[クロージャ]]を持つ、Rubyなら以下のようにする。
def managers(emps)
end
Cでの関数ポインタ、Javaでの無名クラス、CCでの関数ポインタ、[[Java]]での無名クラス、C#でのデリゲートで、同じようなことができるが、違いがある。
1つは、定義された時点での変数が参照できること。
end
また、以下の関数は、引数に依存した振る舞いをするクロージャを返している。また、以下の関数は、引数に依存した振る舞いをする[[クロージャ]]を返している。
def paidMore(amount)
*[http://nonn-et-twk.net/twk/closure/ JavaScriptでの例]
*[[SJC-P インナークラス]]