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

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

21
**(ダブルスター/アスタリスク)および*(スター/アスタリスク)はパラメーターに対して何をしますか?
OverаэтотвопросестьответынаStack Overflowнарусском:Чтозначит*(звёздочка)и**двойнаязвёздочкавПитон 次のメソッドの定義では、何がない*と**のために何param2? def foo(param1, *param2): def bar(param1, **param2):


7
Goで2つのスライスを連結する
私はスライス[1, 2]とスライスを結合しようとしています[3, 4]。Goでこれを行うにはどうすればよいですか? 私は試した: append([]int{1,2}, []int{3,4}) しかし得た: cannot use []int literal (type []int) as type int in append しかし、ドキュメントにはこれが可能であることが示されているようですが、何が欠けていますか? slice = append(slice, anotherSlice...)

5
varargsパラメーターによるヒープ汚染の可能性
これは、Java 7でジェネリック型のvarargsを使用するときに発生することを理解しています。 しかし、私の質問です。 「使用するとヒープが汚染される可能性がある」とEclipseが正確に意味するのは何ですか? そして 新しい@SafeVarargsアノテーションはどのようにこれを防ぎますか?

21
JavaScriptで「arguments」オブジェクトを配列に変換するにはどうすればよいですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供してください。これには、引用や、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 argumentsJavaScript のオブジェクトは奇妙なイボです。ほとんどの状況で配列のように動作しますが、実際には配列オブジェクトではありません。それはですので、完全には本当に何か他のもの、それはからの便利な機能を持っていないArray.prototypeようなforEach、sort、filter、とmap。 単純なforループを使用して、argumentsオブジェクトから新しい配列を作成するのは簡単です。たとえば、次の関数は引数を並べ替えます。 function sortArgs() { var args = []; for (var i = 0; i < arguments.length; i++) args[i] = arguments[i]; return args.sort(); } ただし、これは、非常に便利なJavaScript配列関数にアクセスするためだけに実行する必要がある、かなり哀れなことです。標準ライブラリを使用して行う組み込みの方法はありますか?

10
paramsキーワードを使用する理由
これは基本的な質問ですが、回答が見つかりませんでした。 なぜそれを使うのですか?関数またはそれを使用するメソッドを作成した場合、それを削除しても、コードは完全に機能します。機能がない場合と同じように100%機能します。例えば: パラメータあり: static public int addTwoEach(params int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; } パラメータなし: static public int addTwoEach(int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; …

10
可変数の引数を渡す
可変数の引数をとるC関数があるとします。内部から可変数の引数を期待する別の関数を呼び出して、最初の関数に渡されたすべての引数を渡すにはどうすればよいでしょうか。 例: void format_string(char *fmt, ...); void debug_print(int dbg_lvl, char *fmt, ...) { format_string(fmt, /* how do I pass all the arguments from '...'? */); fprintf(stdout, fmt); }


5
Javaで可変引数を持つメソッドに引数として配列を渡すことはできますか?
次のような関数を作成できるようにしたいと思います。 class A { private String extraVar; public String myFormat(String format, Object ... args){ return String.format(format, extraVar, args); } } ここでの問題は、それがあるargsとして扱われるObject[]方法でmyFormat、ひいてはへの単一の引数であるString.format私はすべての単一たい一方で、Object中にはargs新しい引数として渡されます。String.formatも可変引数を持つメソッドなので、これは可能であるべきです。 これが不可能な場合、次のような方法はありString.format(String format, Object[] args)ますか?その場合、私は新しい配列extraVarをargs使用することに付加して、それをそのメソッドに渡すことができます。

4
ArrayListをvarargsメソッドパラメータに渡す方法は?
基本的に私は場所のArrayListを持っています: ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>(); この下で私は次のメソッドを呼び出します: .getMap(); getMap()メソッドのパラメーターは次のとおりです。 getMap(WorldLocation... locations) 私が抱えている問題はlocations、そのメソッドにWHOLEリストを渡す方法がわからないことです。 私はもう試した .getMap(locations.toArray()) ただし、getMapはObject []を受け入れないため、これを受け入れません。 今私が使うなら .getMap(locations.get(0)); それは完全に機能します...しかし、どういうわけかすべての場所を渡す必要があります...もちろん、追加locations.get(1), locations.get(2)などを続けることはできますが、配列のサイズは異なります。私は単に全体の概念に慣れていないArrayList これに対処する最も簡単な方法は何でしょうか?今はまっすぐ考えていないような気がします。


2
Java SafeVarargsアノテーション、標準またはベストプラクティスは存在しますか?
最近、java @SafeVarargsアノテーションに遭遇しました。Javaの可変個関数が安全ではない理由をググリングすると、混乱してしまいました(ヒープポイズニング?消去された型?)。 可変個のJava関数をある@SafeVarargs意味で安全でないものにする理由(詳細な例の形式で説明することが望ましい)。 なぜこの注釈はプログラマーの裁量に任されているのですか?これはコンパイラがチェックできるはずではありませんか? 彼の機能が本当に安全であることを保証するために遵守しなければならない標準がありますか?そうでない場合、それを確実にするためのベストプラクティスは何ですか?

12
JavaScript関数に可変数の引数を送信することは可能ですか?
配列から可変数の引数をJavaScript関数に送信することは可能ですか? var arr = ['a','b','c'] var func = function() { // debug alert(arguments.length); // for(arg in arguments) alert(arg); } func('a','b','c','d'); // prints 4 which is what I want, then 'a','b','c','d' func(arr); // prints 1, then 'Array' 私は最近多くのPythonを作成しましたが、可変引数を受け入れて送信できるのは素晴らしいパターンです。例えば def func(*args): print len(args) for i in args: print i func('a','b','c','d'); // prints …

9
Mockitoで可変引数を適切に一致させる方法
私はMockitoを使用して、可変引数パラメーターを持つメソッドをモックしようとしています: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); これは機能しませんが、代わりにこれを行うと: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); これは機能しますが、メソッドをスタブするときにvarargs引数を完全に省略しています。 手がかりはありますか?

7
Swiftで可変数の引数を持つ関数に配列を渡す
でスウィフトプログラミング言語、それは言います: 関数は可変数の引数を取り、それらを配列に収集することもできます。 func sumOf(numbers: Int...) -> Int { ... } このような関数をコンマ区切りの数値リスト( `sumOf(1、2、3、4))で呼び出すと、関数内で配列として使用できるようになります。 質問:この関数に渡したい数値の配列がすでにある場合はどうなりますか? let numbers = [1, 2, 3, 4] sumOf(numbers) これは、「指定された引数を受け入れる '__conversion'のオーバーロードを見つけられませんでした」というコンパイラエラーで失敗します。既存の配列を可変個関数に渡すことができる要素のリストに変換する方法はありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.