C# 3.0 / The LINQ Project September 2005 / Expression treesの実験
Expressionの実験コード
using System; using System.Query; using System.Expressions; static class Program { static void Main() { Expression<Func<double, double, double>> e =(n, m) => (n * 3 - 4 / m) + Math.Pow(n, m); Expression<Func<char, int, string>> f =(c, r) => new string(c,r).ToUpper(); Console.WriteLine(e); Console.WriteLine(f); } }
実行結果のコンソール出力
|n,m| Add(Subtract(Multiply(n, 3), Divide(4, m)), Pow(n, m)) |c,r| new System.String(c, r).ToUpper()
きちんとした環境でなく、コンソールでコンパイルするなどして実験しました。また詳細はわかりませんが、強力なコードが短く書けそうです。ラムダ式で書かれた実行コードによる表現を直にExpressionクラスオブジェクトを用いて木構造化して(Expression tree)、構造をデータとして扱うことができるようです。ただし、実行方法は用意されていないのかも知れません。どの部分も最終仕様ではないようなので、まだ変化するかも知れません。