問題タブ [variadic]
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.
php - 可変個引数関数、つまり引数の数が定義されていない関数のDoxygenコメントを作成するにはどうすればよいですか?
パラメータの数に制限がない関数のdoxygenブロックコメントを書き込もうとしていますが、適切なタグが見つかりませんでした。提供されるパラメーターはすべて文字列である必要があり、それらは関数内で連結されて新しい文字列を形成します。
doxygenタグの正しい使用法は何ですか?
templates - あいまいなオーバーロードへの可変個引数テンプレートを使用したコールバック
C++0X では、可変個引数テンプレートを使用して汎用の呼び出し元/コールバック関数を記述したいと考えています。最初のハードル: 呼び出し先はメンバー関数です。ここまでは順調ですね。2 番目のハードル: 同じ名前のオーバーロードされたメンバー関数が多数あります。
どうすればこれを解決できますか? 私の主な参考文献はこのすばらしい記事ですが、うまく機能させることはできません。
それでは、詳しく見ていきましょう:
ただし、オーバーロードによってテンプレートの解決が妨げられるため、yum() で呼び出しをコンパイルできません。参照記事によると、関数オブジェクトを明示的に作成する必要があります
そしてのんびり電話sendBarToID_15(f, this, 17, 29)
。
どうすればこれを機能させることができますか?
最後の行の「this」を不要にする std::bind マジックのボーナス ポイント。
便利な方法で 15 のパラメトリックを作成するための追加のボーナス ポイント。
どうもありがとう!
templates - 可変個引数テンプレートを使用したインデックス作成
たとえば、展開しているパラメーター パックがあるとします。
ここで、これらのオブジェクトが通過する必要のある他の小さな機能があるとしましょう。
私は通常、単に
some_func
しかし、パラメータ パック内の数値的な位置など、パラメータのタイプだけでなく、パラメータに関する詳細情報が必要な場合はどうすればよいでしょうか。そのため、拡張する代わりに
私はそれを展開することができました
例えば?
variadic - jsdocで可変パラメータをドキュメント化する方法は?
jsdocで可変パラメータをドキュメント化する方法は? 「文字列の配列」のようなタイプのパラメータをドキュメント化する方法はありますか?
c++ - 可変個引数のマクロ引数でC++プリプロセッサの文字列化を使用する方法はありますか?
私の推測では、この質問への答えはノーですが、方法があれば素晴らしいでしょう。明確にするために、私が次のマクロを持っていると仮定します。
私がやりたいのは、可変個引数関数に渡す前に、Xのすべての変数に対して何らかの方法で文字列化を実行することです。ここでのキーワードは前です。マクロ定義内から個々の引数に実際にアクセスする方法はないことに気付きましたが、次のようなものを使用して、すべての引数を文字列化する方法はありますか?
objective-c - 可変個引数の後の引数
Objective-C、具体的にはCocoaは、たとえばNSStringのメソッドのクラスのように可変個引数をサポートします +(NSString *)stringWithFormat:(NSString *)string, ....
。
さて、私が知りたいのは、可変個引数の引数がメソッドの最後にある必要があるということに従うことができるかどうか、またはメソッドがその後も続行できるかどうかです。
例として、(適切なマクロを使用した)可変個引数メソッドがあるとします。
特定のインデックスで使用したい場合は、次のようにできますか?
私は試しましたが、この特定の例は機能せず、「Expected';」というエラーメッセージが表示されます。メソッドプロトタイプの後」。もちろん、次のように、可変個引数の引数が最後にあることを確認するために、引数をシャッフルすることもできます。
これは確かに機能しますが、Cocoaの命名規則の中で、かなり異質な感じがします。これは私にとって問題です。
ありがとうございました、
templates - この可変個引数テンプレートの引数の推論は正しいですか?
私は可変個引数テンプレートと引数転送を実験してきました。一貫性のない動作を見つけたと思います。
説明のために、このプログラムは次のとおりです。
以下を出力します。
fooのテンプレート特殊化にはconst参照の最初の引数がありますが、X<A>
出力が示すように、テンプレート型は非参照型として推定されるため、可変引数は値によって渡されます。
だから、私はトーマスベッカーに相談します:
ここでは、以下が適用されます。
タイプAの左辺値でfooが呼び出されると、TはA&に解決されるため、上記の参照折りたたみルールにより、引数タイプは事実上A&になります。
タイプAの右辺値でfooが呼び出されると、TはAに解決されるため、引数タイプはA&&になります。
そしてこれを試してください:
どの出力:
今、私は困惑しています。ここでは、fooの呼び出しが3つあります。私の頭の中では、 (A()は名前のない右辺値であるため、参照であるため)、過負荷で解決するものをmain()
推測する必要があります。これは順番に推論します。foo<A,A,A>(A&&,A&&,A&&)
foo<A,A,A>(const A&,A&&,A&&)
foo<A,A>(A&&,A&&)
質問は:どうしてX<A,A>
非参照A
がX<A&>
ありますが、参照があるのA
ですか?
std::forward
再帰で使用できないため、これにより問題が発生します。
c++ - C ++の可変引数関数のタイプセーフな代替手段は何ですか?
この質問と併せて。次の一見基本的な問題に対する適切な型安全な解決策を思いつくのに苦労しています。再生する曲のリストを持つクラス music_playlist があります。キュー内のすべての曲の std::list を作成し、ユーザーが利用できるようにするだけです。ただし、必要に応じて、オーディオのデコードとオーディオのレンダリングは別のスレッドで行われます。したがって、リストはミューテックスで保護する必要があります。多くの場合、私のライブラリを使用している他のプログラマーがミューテックスを忘れていました。これは明らかに「奇妙な」問題につながりました。
最初は、クラスのセッターを作成しました。
これにより、以下のようなユーザーコードが作成されました...
これは機能し、非常に明示的ですが。入力するのは非常に面倒であり、実際の作業に関するすべての面倒な作業により、バグが発生しやすくなります。これを実証するために、私は実際に上記のコードに意図的にバグを入れました。このようなものは簡単に作成でき、おそらくコード レビューをそのまま通過するでしょうが、song4 はプレイリスト 2 で再生されることはありません。
そこから、可変引数関数を調べました。
以下のようなユーザーコードにつながります...
曲が 2 回追加されたか、含まれていないかを簡単に確認できるようになりました。ただし、ソリューション A では、NULL がリストの最後になく、クロス プラットフォームでない場合にクラッシュします。solutionB では、いくつかのバグにつながる引数の量を数えなければなりません。また、いずれのソリューションもタイプ セーフではなく、ユーザーが無関係なタイプを渡して、実行時にクラッシュを待つ可能性があります。これは持続可能な解決策とは思えませんでした。それで、std::initializer_list に出会いました。私が開発したいくつかのコンパイラはまだサポートしていません。ということで真似してみました。私は以下のこの解決策に行き着きました。
これにより、ユーザーコードは次のようになります...
この構文は、私たちの小さなテストグループにとって混乱を招くものではありませんでした。しかし、私はオペレーターの過負荷をひどく乱用することに深刻な懸念を抱いていました。ということで、上記の質問を投稿しました。私たちのテスト グループに比べて比較的専門的なプログラマーが何を考えているかを知りたかったのです。多くのプログラマーはそれを好まなかったが、実行時だけでなくコンパイル時にほとんどのバグをキャッチできるため、上記のソリューションよりも優れているように思われた. しかし、Tom は興味深い反例を投稿しました。これは、予期しない動作を引き起こす可能性があります。
これは私をその解決策に悩ませます。では、より良い解決策について何かアイデアはありますか?
PS上記のコードはどれもコンパイルされていません。例としてのみ存在します。
javascript - Javascriptの可変関数内で可変関数を呼び出す?
私は 2 つの関数 a() と b() を持っています。どちらも可変引数関数です。次のように関数 a() を呼び出すとします。
次に、関数 b() が a() 内でも呼び出されますが、 a() の引数リストに最初の引数 "arg0" はありません。
方法はありますか?
c - C - va_list をセンチネル終了関数に渡す - execlp() のラッパーが必要
execlp() のラッパーを作成しようとしています。なぜこれが機能しないのですか?センチネルですか?
ご回答ありがとうございます。