無名関数とdelegate
誰か書いてるかも知れないけど。
C#でdelegate宣言、関数定義を無駄に書くのもめんどいのでこんなの書いた。
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { public class L0<K> { public delegate void Function(K o); private L0() { } public static Function Defun(Function func) { return func; } } public class L1<K, T> { public delegate K Function(T o); private L1() { } public static Function Defun(Function func) { return func; } } public class L2<K, V, T> { public delegate K Function(V v, T o); private L2() { } public static Function Defun(Function func) { return func; } } class Program { static void Main(string[] args) { int init = 10; List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); List<int> resultData = L2<List<int>, List<int>, L1<int, int>.Function>.Defun( delegate(List<int> lst, L1<int, int>.Function func) { List<int> result = new List<int>(); foreach (int data in lst) { result.Add(func(data)); } return result; } )(list, delegate(int data) { return data + init; }); } } }
無名関数で一息にmap関数を書ける。
C#はLLっぽく書けそうな気がするな。3.0ではそれが加速してると思う。
でもとりあえずこんなコード書くひとはクビだと思う。