問題タブ [variadic-functions]
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.
java - Map を初期化するタイプセーフな varargs メソッド
Map の初期化に使用できるメソッドを書きたいと思っています。最初のカット:
シンプルですが、型安全ではありません。ジェネリックを使用すると、おそらく次のようになります。
しかし、その構文はサポートされていません。だから最終的に私はこれに行きます:
しかし、試してみると、キャストする必要があります。
完全に一般的でありながらキャストする必要がないように、 map() メソッドをコーディングする方法を誰か教えてもらえますか?
flash - varargs を拡張リストとしてメソッドに渡す方法は?
次の Flash メソッドがあるとします。
ExternalInterface.call() が引数を展開された形式で解釈するようにするにはどうすればよいですか? 現在、「args」にリストを渡すと、そのリストは、ExternalInterface.call() によって「Object[]」型の単一の引数として解釈されます。引数が Java に到達すると、コンマで区切られた複数の引数と、値の一部としてコンマを含む単一の引数を区別する方法がありません。
programming-languages - 最後に変数引数を持つ関数を持つプログラミング言語はありますか?
Python、C ++、Schemeなどはすべて、引数リストの最後に可変数の引数を取る関数を定義できます...
...次のように呼び出すことができます:
など...引数リストを使用して可変個引数関数を他の場所で実行できる言語はありますか?このようなもの:
これらすべてが有効な場合:
また、引数リストのどこかにあるオプションの引数はどうですか?
c++ - コンストラクターのマルチ引数が Linux で機能しないのはなぜですか?
私の例外クラスには、複数の引数 (...) を持つコンストラクターがあります。これは Windows では正常に動作しますが、Linux では正常にコンパイルされますが、リンクを拒否します。
これが Linux で動作しないのはなぜですか?
以下に例を示します。
.
編集
だから私はそれを次のように呼び出すと:
次のコンパイル エラーが発生します。
javascript - JavaScript関数の引数を再帰的に連結する
関数に渡されたすべての文字列を連結する 1 行の JavaScript コードを作成してください:
@ミーボ
関数の引数がインデックス付きオブジェクト MAYBE 配列として表されているのを見て、再帰的な方法で実行できると思いました。ただし、再帰的な実装でエラーがスローされます。--"conc.arguments.shift は関数ではありません" --
conc.arguments は配列ではないようですが、数値インデックスでアクセスでき、長さプロパティがありますか??? 紛らわしいです -- 意見やその他の再帰的な実装を共有してください。
ありがとう
actionscript-3 - ActionScript での Vararg メソッドのラップ
別の vararg メソッドのプロキシとして機能させたい vararg メソッドがありますが、その方法がわかりません。基本的なコードは次のとおりです。
Java からコードを移植しています。型システムは、引数が実際には配列ではなく文字列であることを認識しているため、引数を直接渡すことで b() を呼び出すことがわかり、すべてがあなたのやり方で機能します。予想。
しかし、ActionScript では、proxy メソッドを介して呼び出されると、引数配列が別の配列にラップされます。
したがって、b() が直接呼び出された場合、配列の深さは 1 レベルのみです。ただし、b() が a() を介して呼び出されると、配列は 2 レベルの深さになります。
これを回避するためのトリックを知っている人はいますか?
(注: 私の実際のコードでは、a() と b() は実際には別のクラスにあり、b() の実装にはまったく触れたくありません。a() は心ゆくまで書き直すことができます。ただし、b() は変更しないでください。)
java - メソッド署名のJava「params」?
C# では、メソッドに不定の数のパラメーターを持たせたい場合、メソッド シグネチャの最後のパラメーターを a にすることができます。params
これにより、メソッド パラメーターは配列のように見えますが、メソッドを使用するすべてのユーザーがその型のパラメーターをできるだけ多く渡すことができます。呼び出し元が望むように。
Javaが同様の動作をサポートしていると確信していますが、その方法がわかりません。
c++ - va_end は正確には何のためですか? 常に呼び出す必要がありますか?
va_end
- リセットするマクロarg_ptr
。
可変引数リストにアクセスした後、arg_ptr
ポインタは通常 でリセットされva_end()
ます。リストを繰り返したい場合は必要なのは理解していますが、そうしない場合は本当に必要ですか? default:
「常にあなたの」というルールのように、それは単なる良い習慣switch
ですか?
java - JavaまたはApache Commonsにvarargsのnullチェック機能はありますか?
4 つの変数があり、それらのいずれかが null かどうかを確認したいと考えています。できます
しかし、私が本当に欲しいのは
しかし、私はそれを自分で書きたくありません。この関数は一般的な Java ライブラリに存在しますか? Commons Lang を確認しましたが、表示されませんでした。任意の数の引数を取るには、varargs を使用する必要があります。
c - 関数の引数を「再渡す」
私は古典的な C を使用してこのクラスの割り当てを行っていますが、可変引数のカウントと型を取るコールバック関数に関するこの問題に悩まされています。
基本的に、私はハッシュ ツリー (各ノードがハッシュ ツリーであるツリー) に取り組んでおり、さまざまな目的で複数回使用される特定のトラバーサル戦略があるため、それを として実装しましht_walk(HashTree tree, (*callback)(Element e))
た。コールバックとして呼び出される関数は、必要に応じて要素を処理します。
問題は、私の問題のほとんどの状況で、コールバック関数が異なる引数を取る必要があることです。「可変引数」関数 (stdarg、printf-way を使用) を使用して可変引数リストを持つ関数を設計する方法は知っていますが、これらの引数をコールバック関数に「再渡す」方法はわかりません。
具体例を挙げましょう。 というコールバック関数がaddToList(Element e, List list)
あり、 ht_walk 宣言が になったとしますht_walk(HashTree tree, (*callback)(Element e), ...)
。次のスニペットのように ht_walk を使用したいとします。
これを行う方法はありますか?前もって感謝します!