問題タブ [default-arguments]

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 投票する
3 に答える
222 参照

python - デフォルトの関数引数としてリストを使用した奇妙な動作

重複の可能性:
Pythonの「驚き最小の原則」:
奇妙な動作を拡張する可変デフォルト引数リスト
メソッド名を使用したピラミッドトラバーサルビュールックアップ

私がこの関数を持っているとしましょう:

それを呼び出すと、次の結果が得られます。

に変更b += [1]するb = b + [1]と、関数の動作が変わります。

とどうb = b + [1]違うのb += [1]?なぜこれが起こるのですか?

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

c++ - C ++ 11のラムダ式がデフォルトの引数をサポートしている場合はどうなりますか?

次のコードは非常に便利で害はないと思います。

C ++ 11がラムダ式のデフォルト引数を明示的に禁止しているのはなぜですか?

背後にある理論的根拠と考慮事項について疑問に思います。

C++11規格の「何」ではなく「なぜ」を知りたい。

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

c++ - 関数のオーバーロードとC++のデフォルト引数

こんにちは私は混乱している、またはもっと言うために私は何かを理解する必要があります。プロシージャと同じオーバーロードされたプロシージャがあります。

2つのオーバーロードされた関数を使用する代わりにc、オーバーロードされた関数をデフォルトの引数として作成することは可能ですか。そのため、誰かが2つの引数しか渡さなくても、その場合を処理する関数を1つだけ持つことができます。

しかし、私の主な関心事は、現在の3番目の議論にありますconst char* c。したがって、のようなものにしconst char* c = "string"た場合、デフォルトの引数を持つ1つの関数でオーバーロードを削除する場合を処理する正しい方法でしょうか。

私はここで投稿を見ましたが、それは私が持っている混乱ではなく、コンパイルに焦点を当てているようです。

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

c++ - テンプレート パラメータのデフォルトは新しいものに

このリンクは私の質問に答えないので、ここで質問します。

基本的にはテンプレート関数を書きたい

Outここでは、 を呼び出すときに常に指定する必要がありますf。毎回やりたくないので基本的にはやりたい

つまり、指定しない場合Out、デフォルトで になりますIn。ただし、これは C++11 では不可能です。

だから私の質問は、効果を達成する方法はありますか?

  1. 呼び出しf(t)はインスタンス化するf<T,T>(t)か、より一般的にf<typename SomeThing<T>::type, T>
  2. 呼び出すf<U>(t)とインスタンス化されますf<U, T>(t)
0 投票する
2 に答える
92 参照

c++ - 仮想関数のデフォルト引数

その背後にある理由を見つけるのを手伝ってください:

B :: fun()を呼び出していますが、まだ5を出力していますが、なぜ、どのように機能するのでしょうか。

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

c++ - メンバー関数テンプレート引数のデフォルト値

次のコードはGCC4.5.3でコンパイルされますが、VS 2008および2010ではコンパイルされません。これはVSコンパイラのバグによるものですか、それとも標準ではデフォルトの関数テンプレート引数値の指定が禁止されていますか?

エラーメッセージ

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

php - デフォルトの引数値は、提供された引数をオーバーライドしますか?

私はPHPに関数を持っていますが、これにはデフォルトでいくつかの引数がありnull、引数の総数より少ない数で簡単に呼び出すことができます。問題は、nullのデフォルトの引数を直接使用すると、指定された引数を取得しますが、その値を別の変数にコピーしようとすると、変数はデフォルト値の。のみを取得することですnull。次のようになります。

別のスクリプトから次のような関数を呼び出します:(これは、トラックや車を処理するダミーのスクリプトです)。

私のbind()関数はMySQLIbind_param()bind_result()関数のラッパーです。実際のロジックに到達する前に、その時点ですでに失敗しているため、上位の2行のみを含めました。

今のところ、これはPHPのバグのように見えます。これは、変数、引数、デフォルト引数、および参照がどのように機能するかについて私が知っていることに従っていないためです。さらに、この問題は実際のコードにのみ現れるようであり、これをテストするためにコーディングした単純なphpファイルには現れません。

詳細情報:

$fooNULLが空の文字列の場合は、が割り当てられ、$arg2空でない文字列の場合は""適切に割り当てられます。空の文字列はまだ有効な文字列ですが、なぜPHPがこれを行うのですか?

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

c++ - コンストラクターのstd::functionのデフォルト引数としてのLambda関数

クラスのコンストラクターにfunctorパラメーターのデフォルトのfunctorが必要です。最小限の例として、フィルターとして機能するクラスを考え出しました。このクラスはT、フィルター関数がtrueを返す場合にタイプiの要素をフィルター処理します。フィルタ関数はコンストラクタで提供する必要があり、デフォルトでは「すべて受け入れる」フィルタ関数になります。

次のようにテンプレートクラスをインスタンス化します。

ただし、gcc 4.7はこのコードを気に入っていないようです

どうしたの?私のコード標準は準拠していますか(GCCはここで本当にバグがあるか、これを実装していません)、または私は何か間違ったことをしていますか?

回避策として、現在、デフォルトで構成されたものを使用しており、設定されている場合にstd::functionのみ呼び出します(呼び出したい場所)。

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

c++ - C++のデフォルト引数-宣言

クラスで関数を作成しました。すべての宣言をヘッダーファイルに入れ、すべての定義を.cppに入れました。

私のヘッダーで:

私の.cppで:

コンパイルして実行しようとすると、2つのエラーが発生します。

エラー:'std :: string FileReader :: Trim(std :: string、char)'[-fpermissive]のパラメータ2にデフォルトの引数が指定されています

エラー:'std :: string FileReader :: Trim(std :: string、char)'[-fpermissive]の以前の指定の後

私は何が間違っているのですか?関数にこのデフォルトの引数を持たせたいだけです。

0 投票する
0 に答える
261 参照

c++ - デフォルトの valarray の受け渡しが機能しない

C++ には、次の 2 つの関数があります。

do_work(args) を呼び出して wrapper(args) を呼び出すと、異なる結果が得られます。前者は問題なく動作します。後者は do_work 関数のどこかでクラッシュしますが、その理由はわかりません (コードは非常に複雑です)。これはなぜですか?ラッパー内の関数呼び出しで「arr」引数を省略した場合:

その後、wrapper(args) は正常に動作します! 何が起こっているのか誰にも分かりますか?どこから探し始めたらいいのかわからない。