問題タブ [default-parameters]

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.

0 投票する
29 に答える
1375725 参照

javascript - JavaScript 関数のデフォルト パラメータ値を設定する

JavaScript 関数に、値が定義されていない場合に使用される (値が渡された場合は無視される) デフォルトを設定するオプションの引数を持たせたいと考えています。Ruby では次のようにできます。

これは JavaScript で動作しますか?

0 投票する
31 に答える
208836 参照

python - 「最小の驚き」と変更可能なデフォルト引数

十分長い間 Python をいじっている人は誰でも、次の問題に悩まされています (またはバラバラに引き裂かれています)。

Python の初心者は、この関数が常に 1 つの要素のみを含むリストを返すことを期待するでしょう: [5]. その代わりに、結果は非常に異なっており、非常に驚​​くべきものです (初心者にとって):

私のマネージャーはかつてこの機能に初めて遭遇し、言語の「劇的な設計上の欠陥」と呼んでいました。私は、この動作には根本的な説明があると答えました。内部構造を理解していないと、非常に不可解で予想外です。ただし、次の質問に (自分自身で) 答えることができませんでした: 関数の実行時ではなく、関数の定義時に既定の引数をバインドする理由は何ですか? 経験豊富な動作が実際に使用できるとは思えません (バグを繁殖させることなく、C で静的変数を実際に使用したのは誰ですか?)

編集

Baczek は興味深い例を示しました。あなたのコメントのほとんどと特にウタールのコメントとともに、私はさらに詳しく説明しました。

私には、設計上の決定は、パラメーターのスコープをどこに配置するかに関連しているように見えます: 関数内、またはそれと「一緒に」?

関数内でバインドを行うxと、関数が呼び出されたときに指定されたデフォルトに効果的にバインドされ、定義されていないことを意味します。これは、深刻な欠陥をもたらすものです:def行は、バインドの一部 (の関数オブジェクト) は定義時に発生し、一部 (デフォルト パラメーターの割り当て) は関数呼び出し時に発生します。

実際の動作はより一貫しています。その行が実行されるとき、つまり関数定義時に、その行のすべてが評価されます。

0 投票する
22 に答える
254884 参照

c - Cのデフォルト引数

Cの関数にデフォルトの引数を指定する方法はありますか?

0 投票する
2 に答える
6257 参照

c++ - Function pointers with default parameters in C++

How does C++ handle function pointers in relation to functions with defaulted parameters?

If I have:

Which function pointers can I use in relation to which function?

0 投票する
6 に答える
95037 参照

c# - C# 4 のデフォルト パラメータ値: デフォルトの DateTime/オブジェクト値を割り当てる方法は?

DateTime がオブジェクトであり、既定の C# パラメーターにコンパイル時の定数しか割り当てられない場合、DateTime などのオブジェクトに既定値をどのように指定しますか?

名前付きパラメーターをデフォルト値で使用して、コンストラクターで POCO の値を初期化しようとしています。

0 投票する
3 に答える
71 参照

c# - これらのデフォルト パラメータの疑似シミュレーションの間に、機械的な大きな違いはありますか?

C#4.0 では、メソッドにデフォルトのパラメーターを許可することで、非常に凝った便利な機能が導入されました。しかし、C#3.0 はそうではありません。したがって、「デフォルト パラメーター」をシミュレートする場合は、そのメソッドを 2 つ作成する必要があります。1 つはそれらの引数を持ち、もう 1 つはそれらの引数を持たないものです。これを行うには2つの方法があります。

バージョン A - 他のメソッドを呼び出す

バージョン B - メソッド本体をコピーする

これらの間に実際の違いはありますか?これは、最適化やリソースの使用法などに関する質問ではありません (一貫性を維持するという私の一般的な目標の一部ですが)、どちらかの方法を選択することに大きな影響があるとは思いませんが、これらのことについては、誤って推測するよりも、質問する方が賢明です。

0 投票する
1 に答える
102 参照

c++ - パラメータのデフォルトを前のパラメータの関数として設定する方法はありますか? 【C++】

私はそうではないと思いますが、チェックしたかっただけです.C++で次のようなことをする方法はありますか? 明らかに、以下を試すと、バーに関するスコープベースのエラーが発生します。

0 投票する
4 に答える
3406 参照

delphi - DelphiのTSomethingのデフォルトパラメータ値

これがDelphiで可能かどうか(またはそれを回避するためのクリーンな方法があるかどうか)を知りたいのですが:

GetSomething( x, y )->これらの値を持つレコードを返します。

...次に、この関数をTSomethingパラメーターとして使用し、デフォルトで次のようにします。

コンパイラはここでエラーを吐き出しますが、それを回避する方法があるかどうかはわかりません!

これはできますか?

0 投票する
2 に答える
2613 参照

c# - デフォルトのパラメータを持つDLLImport c++関数

アンマネージ コード C++ DLL から C# アプリケーションに関数をインポートしようとしています。C++ プロトタイプは

これを c# で宣言して、param2 のデフォルトの性質を利用するにはどうすればよいですか? 次のコードは機能しません。param2 はガベージで初期化されます。