Javaのクロージャをいじってみた。(7)
unrestructured closureなるものが出てきた。キーワード==>とか。 このunrestructured closureの書きっぷり、Rubyのブロックっぽいな。 unrestructured closureを見てまずひらめくのは、多次元配列や コレクションのforeachメソッドかな。多次元でもひとつのforeach()で すべての要素をイテレーションする。 ↓こんな感じの。 //定義側 package xxxx; public class Matrix3 { public int[][] elements; public static void foreach(Matrix3 mat, {int==>int} closure) { int[] row = null; int element = 0; for (int i=0; i<elements.length; i++) { for (int j=0; j<elements[i].length; j++) { elements[i][j] = closure.invoke(elements[i][j]); } } } public Matrix3() { elements = new int[3][3]; for (int i=0; i<elements.length; i++) { for (int j=0; j<elements[i].length; j++) { elements[i][j] = 0; } } } } //利用側 import xxxx.Matrix3; import static xxxx.Matrix3.foreach; ; void func() { Matrix3 mat = new Matrix3(); foreach(int element : mat) { element = 10; } } というような感じ。 呼び出し側の記述は、":"の右側がforeach()の引数、左側は クロージャ==...