2011-08-09 12 views
1

用量ブーを理解する表現木?ブーイングのラムダ式

は私が

exp as System.Linq.Expressions.Expression[of Func[of SomeClass, bool]] = { p as Text | return (p.Name == 'tttt') } 

を開発シャープで、この行をコンパイルしようとしたが、鋭いはブーは、C#よりも長い式ツリーを持っていた

Cannot convert 'callable(testlinq.SomeClass) as bool' to 'System.Linq.Expressions.Expression[of System.Func[of testlinq.SomeClass, bool]]'. (BCE0022) 
+2

あなたが "lambada"(http://en.wikipedia.org/wiki/Lambada)ではなく "lambda"を意味していると仮定して –

+0

今私はこれらの年齢のラムダと呼んでいることに失望しています。 Lambadaははるかに活気があります。 – Jordan

+1

申し訳ありませんが、英語は私の主な言語ではありません –

答えて

1

このエラーを提起を現像します。

http://ayende.com/blog/3065/meta-methods

[Meta] 
static def verify(expr as Expression): 
    return [| 
     unless $expr: 
      raise $(expr.ToCodeString()) 
    |] 

IIRCブーを可能にするように設計されたメタプログラミングマクロの(多くのLispの、Nemerle、および他の多くの関数型言語のような)とブーの任意のフラグメントのASTにそのような許可のフルアクセスとして有しているのコード。

これはすべて長いメモリから提供されるので、最新の情報についてはBooのドキュメントを参照することをお勧めします。

+0

ありがとう、しかし私はラムダ式ツリーではないAST –

+0

ラムダ式ツリーはあいまいです。私はあなたが 'System.Linq.Expressions.Expression'を意味すると思います。私が間違っていない場合、リンクされているサンプルページは、あなたとどのように相互運用するかを正確に示していますが、間違っていると読んでいるかもしれません。 – sehe