問題タブ [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 - 可変数の引数を使用したメソッド呼び出しの委任
この質問は、私の仕事のプログラミングの過程で出てきました。それは現在のタスクとは無関係になりましたが、誰かが答えを持っているかどうか私はまだ興味があります。
Java 1.5以降では、省略記号構文を使用して、可変数の引数を使用してメソッドシグネチャを使用できます。
foosリスト内の各fooに対して何らかの操作を実行し、同じAPIを保持して、この呼び出しをオブジェクトのフィールドに委任するとします。どうすればいいですか?私が欲しいのはこれです:
これはコンパイルされません。どうすればこれを達成できますか(可変数のMyFooをrun(MyFoo ...)メソッドに渡す)?
c - 可変数のパラメーターを使用して関数を呼び出すにはどうすればよいですか?
execlp()
さまざまなプロセスに対して可変数の引数を使用して呼び出すにはどうすればよいですか?
c++ - 可変引数リストを処理するための型の型の格納
次の行に沿って何かをすることは可能ですか:
比較的些細な方法で?タイプを保持できる唯一のオブジェクトは type_info であり、この方法でそれを使用する方法がわかりません。
ありがとう、パトリック
objective-c - Objective-C va_list とセレクター
@selector
可変引数リストを使用するメソッドでand performSelector:
(または同様のもの)を使用することは可能ですか?
デフォルトの動作をオーバーライドするデリゲートを割り当てることができるクラスを作成しています。デリゲートが存在する場合、そのクラスのインスタンスに対して行われた select メソッドの呼び出しは、同じ対応するデリゲート メソッドに転送されます。その一部は可変引数リストを使用します。
したがって、たとえば、次SEL
のようなメソッドを使用して、参照を取得し、デリゲート オブジェクトにメッセージを送信できるようにする必要があります。
これは不可能であると想定しているため、Foundation フレームワークでの同様のメソッド宣言 - in NSString
:
と
委譲したいプロトコルは、次の実装を提案する必要があると思います。
だから私はセレクター@selector(logEventWithFormat:arguments:)
を使用して呼び出すことができます:
私は何かを見逃していたのか、それとも私がやろうとしていることを達成するために長い道のりを歩んでいたのか疑問に思いました.
delphi - Delphiのメモリアドレスで可変個引数C関数を呼び出す
C ++に、メモリアドレスへのポインタを使用して呼び出す関数があるとしtypedef
ます。さて、Delphiで同じことをどのように行うことができますか?
例えば:
そして、私はそれを次のように呼び出すことができます:Function("string", etc);
。
Delphiで、アセンブリ命令を使用せずにこれを行う方法はありますか?
可変個引数パラメータ関数であることに注意してください。
java - Javaのメインが可変長引数リストを使用しないのはなぜですか?
main
Java宣言の構文について質問があります。
main関数を呼び出すときに可変数の文字列を渡すことができるので、これは配列ではなく可変長の引数リストではないでしょうか。文字列パラメータのリストを使用したこのメソッドのコマンドライン呼び出しが機能するのはなぜですか?(文字列のリストを使用して配列を作成し、その配列をmainメソッドに渡す舞台裏の処理がない限り...?)メイン宣言はこのようなものではありません...?-
c++ - エイリアス関数に可変数の引数を渡します
可変数の引数を受け入れるprintfのような関数を取り上げます。私がやりたいのは、これらの可変数の関数を、順序を変更せずにサブ関数に渡すことです。この例は、printf関数をconsoleと呼ばれる関数にエイリアスすることです...
たとえばconsole("Hello %s", sName)
、名前をprintf関数にも渡したいのですが、printfがすでに行っているように、さまざまな数の引数を受け入れ続けることができなければなりません。
c - 可変引数を操作する標準的な方法は?
これは奇妙な質問ですが、va_list
別の関数に渡す前に a の内容を操作する標準的な方法はありますか? たとえば、次の 2 つの関数があるsum
としvsum
ます。
sum
asを呼び出すとsum(4, 1, 2, 3, 4)
、結果は 10 になると予想されます。ここで、vsum
直接呼び出すのではなく、次の処理をsum
行う中間関数を呼び出すとします。vsum_stub
を呼び出すと、のすべての値が 2 ずつインクリメントさsum(4, 1, 2, 3, 4)
れるため、結果 20 が返されるはずです。の結果のアドレスを取得できないため、これはもちろんコンパイルされません。これを行う別の方法はありますか?私はC99で働いています。vsum_stub
va_list
va_arg
バックグラウンド:
データをより効率的な形式でヒープに格納できるように、ポインター変換を行うライブラリに取り組んでいます。printf
プログラムは、独自のスタブ関数 (例: )などのライブラリ関数への呼び出しを変換するカスタム変換を使用してコンパイルされますhc_printf
。引数を実際の関数に渡す前にhc_printf
、ポインター引数 ( を対象とした文字列) を変換する必要があります。%s
printf
編集:これはコード例です。string があるとしましょうfoo
。偽のポインターを返すfoo
変更されたバージョンで動的に割り当てられます。malloc
コンパイラは、偽のポインターを処理できるようにプログラムを変更します。したがって、これは機能します:
fake_vprintf
このような関数を(疑似コードで)書きたいと思います:
プログラムは、偽のポインターを使用してfake_vprintf
、オリジナルと同じように呼び出します。偽のポインターを、本物が使用できる本物のポインターに変換します。vprintf
fake_vprintf
vprintf
actionscript-3 - varargs を使用して actionscript コンストラクターから super() を呼び出す
コンストラクターがそのパラメーターを vararg (...) として受け取る場合、その vararg をスーパークラスに渡すだけのサブクラスを作成することは不可能のようです。
通常の関数のこの同じ状況の修正に関する関連する質問があります: ActionScipt で Vararg メソッドをラップしますが、それをスーパー コールで動作させることはできません。
基本クラス:
サブクラス:
今電話したら
出力を取得します
そして、私はそれを印刷したい:
パラメータの処理を実際にサブクラスに移動するか、別の初期化メソッドにシフトする以外に、スーパーコールを正しく取得する方法を知っている人はいますか?
delphi - Delphi の「const の配列」から「varargs」へ
助けてください!Delphi の一部の C ヘッダーのラッパーを作成するには、この変換が必要です。
例として:
「const の配列」を「varargs」に変換するにはどうすればよいですか?
edit : function PushString は実際にはレコード内にあり (簡単な例を示しました)、pushfstring に直接アクセスすることはできません。直通電話は除きます。
編集 2 : Delphi の LUA ライブラリのユニットを作成していますが、ケースは私にとって非常に重要です。
問題のすべての詳細を指定して提供する-私はCでこの機能を持っています:
Delphiには次のようなものがあります:
LuaLibrary.pas
dtxLua.pas
Lua.pas のような他のユニットでは、dtxLua.pas の TLuaState のみを使用します (LuaLibrary はかさばるため、dtxLua は私のラッパーです)。多くの便利でクールなもの...