問題タブ [functor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - c++ ファンクターと関数テンプレート
この単純で無意味なコードを考えてみてください。
関数テンプレートの非常に単純な例です。A::test
しかし、オーバーロードされたものに置き換えてoperator()
ファンクタにしたい場合はどうすればよいでしょうか?
確かoperator()
に、テンプレートに依存するパラメーターを受け取った場合、コンパイラーはテンプレートを推定する可能性があります。しかし、パラメーターなしのファンクターでテンプレート パラメーターを指定する適切な構文がわかりません。
これを行う適切な方法はありますか?
明らかに、このコードはファンクター構文をバイパスするため機能します。
しかし、それはそれがファンクターであるという目的をちょっと無効にします:-P.
c# - ファンクターはいつ使用する必要がありますか
頭を包み込むことができないようです。
私が理解しているように、それは動的にロジックをクラスに追加しています。フレームワーク内のクラスはこれに備えていますか?
クラスを拡張して、拡張機能に機能を追加する必要があるのはなぜですか。私はグローバルにアクセス可能であり、保守がはるかに簡単です。
私は4つのファンクタータイプがあることを読みました:
Comparer
Closure
Predicate
Transformer
私たちはおそらくそれらのそれぞれを処理する必要があります。
ps vbにそのようなものはありますか?
つまり、ラムダ式はファンクターだと思います。これは私のために少し物事をクリアします:)(hehe)
- ラムダ式はファンクターですか?
- 匿名関数はファンクターですか?
しかし、私は別のタイプの機能、つまりこれらの機能に遭遇したため、この質問をしました。
そして、これでそれを呼び出します:
したがって、派手なラムダスタイルのものはありません。
今、私はこの例を持っていますが、これが「良い」解決策である理由はまったく明らかではありません。
デリゲート(ファンクター)は、プログラマーのショートカットとして「ほとんどの場合」ラムダ式または無名メソッドとして使用されますか?私が見る限り、それらが実際に問題に対して好まれる選択であるケースはごくわずかです。
c++ - どこで見つけることができますか、またはブーストに報告せずにエレガントな C++ メンバー関数テンプレート ラッパー メカニズムを作成するにはどうすればよいですか?
メンバー関数の引数を繰り返す必要なく、メンバー関数のクラスをテンプレート化できるようにしたいと考えています。つまり、それらを自動的に派生させます。関数が取る引数の数に基づいてクラスに名前を付ける場合、これを行う方法はわかっていますが、それも派生させたいと考えています。
このようなものですが、これは機能しません (少なくとも、私のターゲット コンパイラである MSVC 2008 sp1 では):
「ベース」を通じて、これらをポリモーフィックに扱うことができます。最後に、これを使用して、スクリプト言語の単純なラッパー構文を作成したいと思います。
ただし、それは機能しません。関数ポインターを typename 引数に一致させることができないため、特殊化の構文が間違っています。
templates - g++ のテンプレート ファンクター エラー
マップ内のマップされた値を使用して要素のベクトルを作成したいコードがあります。以下のコードは Visual Studio で正常に動作します (そして、私が知る限り、正当に思えます) が、g++ は同意しません。
残念ながら、現時点では正確なエラー テキスト (使用するオーバーロードされた関数を特定できないことに関するもの) または g++ の特定のバージョン (最新版は Ubuntu で配布されています) を持っていませんが、それを取得したら、この投稿を更新してください。
それまでの間、提供されているファンクターの型を g++ が解決できない理由を誰か説明できますか?
c++ - STL文字列比較ファンクター
私は次のファンクターを持っています:
これは厳密な弱順序であると想定されており、デバッグ目的ではこれほど長くなります(1行のみの場合もあります)。
私はこのファンクターをstl::setのコンパレーターファンクターとして使用しています。問題は、最初の要素のみを挿入することです。コンパレータ関数にコンソール出力を追加することで、実際には毎回ファイル名をそれ自体と比較していることがわかりました。
その他の関連する行は次のとおりです。
と
編集: .addFile()を呼び出すコードは次のとおりです。
ここで、all_requestsはリストであり、クラスRequestは次のようになります。
何が起こっているのかについての仮説を立てることができればいいのですが、実際にはわかりません。ポインタを事前に感謝します。
c++ - STLアルゴリズムを使用して、関数ポインタまたはファンクターを渡す方が良いですか?
これら 2 つの方法のどちらが優れているか、またその理由は何ですか?
方法 1:
方法 2:
編集:このように定式化する必要がありましたが、上記の方法のいずれかが他の方法よりも好ましいのはどのような状況ですか?
どうもありがとう!
javascript - JavaScriptでファンクターを作成することは可能ですか?
状態を保持しているがfoo()で呼び出される関数を作成しようとしています。
出来ますか?
c++ - C++ ファンクターとゼロ
最初の免責事項として、boost::function と boost::bind を使用する一連のコードを置き換えます。ただし、rtti を許可しないコードベースに移行しています。ブーストを使い続けたいのですが、この制限を回避する方法があるかどうかわかりません。
そのため、その機能の一部を模倣しようとしていますが、より単純化されています。私はコールバッククラスを持っています:
これにより、パラメータなしで簡単なコールバックを実行できます。
次のように、コールバック オブジェクトをデフォルト パラメータとしてゼロに割り当てられるようにしたいと考えています。
これは、次のように boost::function を使用するときに機能します。
ここでブーストが何らかの魔法を行っていると思います。パラメーターを参照ではなくポインターに変更できることはわかっていますが、前述のように、多くのコードを置き換えており、boost からの変更の影響を最小限に抑えたいと考えています。
c++ - 呼び出し可能なオブジェクトをメンバー関数に渡す
Data のプライベート メンバー _a を Display のメンバー関数にバインドしたいのですが、d.Register を呼び出すと引数の型が一致しないというコンパイル エラーが発生します。ありがとう。