0

ディレクトリを繰り返し処理していて、フィルタがたくさんあるとします。

  1. ファイルがこの文字列と一致する場合
  2. ディレクトリがその文字列と一致する場合
  3. これらのファイル拡張子を除外する
  4. ディレクトリXにヒットしたことがある場合は除外します

ここでファイルごとにチェックし、それらをフィルターとして機能的に使用するための複数のオプションがあります。オンになっている各オプションをラムダに切り替えてから、ラムダのリストを適用して、特定のファイルを含めるか除外するかを確認できます。また、ラムダを互いにラップして、trueまたはfalseを返す1つのラムダで終わることもできます。私はこのパターンの可能性に何度か遭遇しましたが、正しい答えが何であるかわかりません。便宜上、私は通常、ラムダのリストを作成することを選択します。

4

1 に答える 1

1

それらは、同じ作業を行う手書きの関数オブジェクトと同じくらい効率的である必要がありますが、タイピングは少なくて済みます。コンパイラは、ラムダを実装するために非常に魔法のようなものは必要ありません。operator()定義済みの一意の名前のクラスを実装し、キャプチャされた変数のデータ メンバーを宣言するだけです。

于 2012-10-08T22:16:40.003 に答える