タグ付けされた質問 「variadic-functions」

関数は、可変数の引数を受け入れることができる場合、可変個です。つまり、そのアリティは固定されていません。略語「varargs」は、これらのタイプの関数を指すために一般的に使用されます。


9
可変数の引数をPHP関数に渡す方法
可変数の引数をとるPHP関数があります(func_num_args()およびを使用func_get_args())が、関数に渡したい引数の数は配列の長さに依存します。可変数の引数でPHP関数を呼び出す方法はありますか?

9
可変引数リストを受け入れる別の関数に可変引数を渡す
だから私は2つの関数があり、どちらも同じような引数を持っています void example(int a, int b, ...); void exampleB(int b, ...); ここでをexample呼び出しますがexampleB、変更せずに変数引数リストの変数を渡すにはどうすればよいですかexampleB(これはすでに他の場所でも使用されているため)。

3
メソッドシグネチャのJava「パラメータ」?
C#では、メソッドに不確定な数のパラメーターを設定する場合は、メソッドシグネチャの最後のパラメーターをaにparamsして、メソッドパラメーターを配列のように見せることができますが、メソッドを使用するすべてのユーザーがその型のパラメーターをすべて渡すことができます発信者が望むように。 Javaが同様の動作をサポートしていると確信していますが、その方法を見つけることができません。

2
Java unchecked:varargsパラメータの未チェックのジェネリック配列の作成
Javaコードでチェックされていない警告を表示するようにNetbeansを設定しましたが、次の行のエラーを理解できません。 private List<String> cocNumbers; private List<String> vatNumbers; private List<String> ibans; private List<String> banks; ... List<List<String>> combinations = Utils.createCombinations(cocNumbers, vatNumbers, ibans); 与える: [unchecked] unchecked generic array creation for varargs parameter of type List<String>[] メソッドソース: /** * Returns a list of all possible combinations of the entered array of lists. * * …

1
Haskell printfはどのように機能しますか?
Haskellの型安全性は、依存型付けされた言語だけに勝るものはありません。しかし、Text.Printfには、いくぶん型崩れしているように見える深い魔法があります。 > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 これの背後にある深い魔法は何ですか?Text.Printf.printf関数はどのようにこのような可変引数を取ることができますか? Haskellで可変引数を可能にするために使用される一般的なテクニックは何ですか?それはどのように機能しますか? (補足:この手法を使用すると、タイプセーフの一部が明らかに失われます。) > :t printf "%d\n" "foo" printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t

6
単一のnull引数でJava varargsメソッドを呼び出す?
vararg Javaメソッドがfoo(Object ...arg)あり、を呼び出すfoo(null, null)場合、両方arg[0]とarg[1]とnullsがあります。しかし、を呼び出すとfoo(null)、argそれ自体はnullになります。なぜこうなった? どのようにして呼び出す必要がありfoo、そのようなことはfoo.length == 1 && foo[0] == nullありますかtrue?


7
可変数の引数をprintf / sprintfに渡す方法
一部のテキストをフォーマットする「エラー」関数を保持するクラスがあります。可変数の引数を受け入れてから、printfを使用してそれらをフォーマットしたいと思います。 例: class MyClass { public: void Error(const char* format, ...); }; Errorメソッドはパラメーターを受け取り、printf / sprintfを呼び出してフォーマットしてから、何かを実行する必要があります。すべてのフォーマットを自分で書きたくないので、既存のフォーマットの使用方法を試してみるのは理にかなっています。

6
複数のプリミティブパラメータをAsyncTaskに渡すにはどうすればよいですか?
2つのパラメータをAsyncTaskクラスに渡すにはどうすればよいですか?などの関連する質問があります。、しかし、複数のプリミティブをパラメーターとしてAsyncTaskに渡すことを無駄に試みるのが難しいことに遭遇したので、私が発見したことを共有したいと思います。この微妙な点は既存の質問と回答には反映されていないので、私と同じ問題に遭遇した人を助け、彼らの苦痛を救いたいと思います。 質問はこれです:バックグラウンドで実行するためにAsyncTaskに渡したい複数のプリミティブパラメータ(たとえば2つのlong)があります-どのようにそれを行うことができますか?(私の答えは...しばらくこれに苦労した後...以下にあります。)

2
Python、可変長の位置引数の後のデフォルトのキーワード引数
Python 2の関数呼び出しで可変長の位置パラメーターの後に名前付きパラメーターを使用できると思いましたがSyntaxError、Pythonクラスをインポートするとが表示されます。たとえば、次の「get」メソッドを使用して記述しています。 class Foo(object): def __init__(self): print "You have created a Foo." def get(self, *args, raw=False, vars=None): print len(args) print raw print vars エラーは次のようになります。 def get(self, *args, raw=False, vars=None): ^ SyntaxError: invalid syntax メソッドをいくつかの方法で呼び出せるようにしたいと思います。 f = Foo() f.get(arg1, arg2) f.get(arg1, raw=True) f.get(arg1, arg2, raw=True, vars=something) 等

2
va_list引数は実際にはva_listではありません
このコードをコンパイルしようとすると #include <stdarg.h> void bar_ptr(int n, va_list *pvl) { // do va_arg stuff here } void bar(int n, va_list vl) { va_list *pvl = &vl; // error here bar_ptr(n, pvl); } void foo(int n, ...) { va_list vl; va_list *pvl = &vl; // fine here va_start(vl, n); bar(n, vl); va_end(vl); …

2
`fcntl64`の代わりに古いlibc` fcntl`へのリンクを強制する方法は?
そうです(2018年8月発売)GLIBC 2.28は fcntlのにかなり積極的な変更を行いました。定義が変更され<fcntl.h>、外部関数ではなくなりました。なく、#definefcntl64。 その結果、このglibcを使用するシステムでコードをコンパイルした場合、つまりfcntl()を使用した場合、結果のバイナリは2018年8月より前のシステムでは実行されません。これは、さまざまなアプリケーションに影響します。 .fcntl()のマニュアルページは、サブ関数の小さなユニバースのエントリポイントであることを示しています。 https://linux.die.net/man/2/fcntl 必要なGLIBC関数の特定のバージョンをリンカーに伝えることができれば、すばらしいでしょう。しかし、私が見つけた最も近いものは、別の投稿への回答で説明されているこのトリックでした: 「.soファイル内の古いシンボルバージョンに対するリンク」への回答 これはもう少し複雑です。 va_listを取るa fcntlなしの可変vffcntl個です。このような状況では、可変個関数の呼び出しを転送できません。:-( 意図的に低い依存関係を持つ安定したコードがある場合、それを現在のUbuntuでビルドするのは失望です...そして、実行可能ファイルを1年前にリリースされた別のUbuntuで実行することを拒否します(ほぼその日まで)。これにはどのような手段がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.