質問

MSDNのLinqサンプルに適切なメソッドが見つかりました使用したいFold()。例:

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; 
double product = 
     doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor); 

残念ながら、例や自分のコードのいずれかでこれをコンパイルすることはできません。また、MSDNでこのメソッドに言及している他の場所(EnumerableやArray拡張メソッドなど)を見つけることはできません。私が受け取るエラーは、「それについて何も知らない」という単純な古いものです。エラー:

error CS1061: 'System.Array' does not contain a definition for 'Fold' and no 
extension method 'Fold' accepting a first argument of type 'System.Array' could 
be found (are you missing a using directive or an assembly reference?)

私は、Linqから来たと思われる他のメソッド(Select()やWhere()など)を使用しており、「System.Linqを使用しています」ので、すべて大丈夫だと思います。

このメソッドは実際にC#3.5に存在しますか?存在する場合、何が間違っていますか

役に立ちましたか?

解決

Aggregate 拡張メソッドを使用します。

double product = doubles.Aggregate(1.0, (prod, next) => prod * next);

詳細については、 MSDN をご覧ください。 seed を指定してから、連続する値を計算する式を指定できます。

他のヒント

Fold (別名Reduce)は、関数型プログラミングの標準用語です。何らかの理由で、 Aggregate という名前が付けられましたLINQ。

double product = doubles.Aggregate(1.0, (runningProduct, nextFactor) => runningProduct* nextFactor);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top