F# 4.0 specを通して読むと、私は、PDFの79ページで、次のを見ました:カスタム計算式ビルダーでBuilder.Source()を使用する理由は何ですか?
補助機能
src(e)
は、最も内側のForEachは、翻訳によって生成された代わりに、ユーザーコードからのものである場合b.Source(e)
を示し、ビルダーb
方法はSource
です。それ以外の場合、src(e)
はe
を示します。
これは、計算式がどのように解析され、式のビルダーオブジェクトに対する一連のメソッド呼び出しになるかについての詳細な(非常に詳細な)説明の文脈にある。私は私が、計算式の背後にある概念の残りの部分を理解Source
方法を言及していない、また私は見つけることができました、他の参照を行ううえで非常に貴重であることが判明しScott Wlaschin's Computation Expressions series、。 (たくさんの人がソースコードについて話をしており、Source
メソッドへの参照が埋もれているので、Googleはあまり役に立ちません)。
は、MSDN page on computation expressionsのどこにも記載されていません。 QueryBuilder classはSource
を使用していますので、私が見ることができる1つの例がありますが、これが他の状況でなぜ有用であるのかについての説明はありません。
カスタム計算式ビルダにSource
方法を持っているしたいどのような状況下では?デフォルトのForEach
の処理が自分のニーズに不十分で、Source
メソッドが不適切な場合、どのようなシナリオが役立ちますか?
@mydogisbox - リンクありがとうございます。 'source'が' in'節の内容で呼び出されていることに気付きました。つまり 'for item in'は 'Source(x)'を呼び出します。そして私は、 'Source'が' For'に入るのに適した何かを返すべきであることを理解します。私は、なぜ、どうして*見ないのですか? 'QueryBuilder.Source'は、IEnumerableかIQueryable(IEnumerableを継承します)のいずれかを要求します。どちらも、反復処理のための' For'関数に適しています。だから、なぜここで 'ソース'呼び出しが必要ですか?なぜ、「彼らは私にIEnumerableを与えたので、それを反復処理しますか? – rmunn
私たちは同じことを話していると思いますが、私が何を意味するのかを説明するのに十分なスペースがありませんでした。私が話している 'For'は 'QueryBuilderです。For'は、 'query''の' for'式を処理するために呼び出され、db.Customersではcustomerを選択します。 – rmunn