問題タブ [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 投票する
4 に答える
111168 参照

python - 現在のクラスインスタンスの属性をメソッドのパラメータのデフォルト値として使用する

重複の可能性:
インスタンスメソッドの結果としてのパラメーターのデフォルト値

Pythonで関数パラメータにデフォルト値を設定することは可能ですが:

現在のインスタンス(自己)にアクセスできないようです:

私の質問:

  • これは、現在のインスタンスにアクセスして関数のデフォルトパラメータを設定できないということですか?
  • それが可能でない場合:理由は何ですか?これがPythonの将来のバージョンで可能になると想像できますか?
0 投票する
2 に答える
1195 参照

scala - 前の位置引数を参照するには、Scalaのデフォルト引数はどのようにすべきですか?

Scala-lang リファレンス 5.5.1 と 6.6.1 は、デフォルトのパラメーターが以前に評価されたパラメーターを参照できるという印象を与えました。

しかし、実験から、これを行う唯一の方法は次の形式を使用することのようです:

次に、補助コンストラクターまたは作成コンパニオン クラスを定義して、作成時に 2 番目のブラケット セットを指定しないようにします。firstこの 2 番目のコンストラクターがどのように機能するのかよくわかりません。カリー化された関数のように見えるので、 とは独立して評価する必要があると推測できますsecondが、これは正しいですか? このフォームは必要ですか、それとも最初のコンストラクターを微調整して私がやりたいことを行うために使用できるシンタックス シュガーはありますか?

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

c# - デフォルトのパラメーターとジェネリックに関するメソッド解決の問題

.NET 4 を使用して、以下のサンプルの最初のメソッド呼び出しをコンパイラが解決できないことに混乱しています。

誰でもこれに光を当てることができますか?(上記のように) コンパイラを支援するために API を変更する以外に、ここで前進する方法はないと思いますExtensions3が、より簡単でより良い方法がある場合は、それを聞いてみたいです.

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

python - Python 3:「自己」を使用する必要がある __init__ で自己の属性を設定するコマンドを与える?

質問のヘッダーが奇妙に聞こえるのは承知していますが、英語は私の母国語ではないので、形式化するのは非常に難しいと思います. ただし、もう少しテキストで説明できるかもしれません。

問題は、たとえば「Foo」というクラスを作成しようとしているということです。

現在、すべての Foo クラスのインスタンスにはfunction属性があり、インスタンスを介して実行できる関数を保持するだけです。また、が呼び出さparametersれたときに使用する必要があるパラメーターを保持する属性、タプルまたはリストがあります。function

これはうまく機能しているようですが、問題は、インスタンスの属性を変更するために、デフォルト値を指定したいということです。私は基本的に次のことをしたい:

そして、これを行うと、 が発生しNameError: name 'self' is not definedます。これを機能させるには、これをどのように実装する必要がありますか、または回避策を考え出す必要がありますか?

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

c++ - メンバ変数をパラメータのデフォルトとして使用できないのはなぜですか?

重複の可能性:
非静的メンバー関数のデフォルト引数としての非静的メンバー

間違っている場合は訂正してください。ただし、デフォルトのパラメーターが機能すると私が考える方法は次のとおりです。

コンパイラが関数呼び出しを確認すると、パラメーターをスタックにプッシュし始めます。パラメータがなくなると、必要なすべてのパラメータが満たされるまでデフォルトをスタックにプッシュし始めます (パラメータは実際には右から左にプッシュされるため、これは単純化されているため、デフォルトで開始されますが、考え方は同じです)。

これが本当なら、メンバー変数をデフォルトとして使用できないのはなぜですか? コンパイラはコール サイトでいつものようにそれらをプッシュしているので、問題なく解決できるはずです。

編集回答から私の質問が誤解されているように見えるので、明確にさせてください。私はこれが事実であることを知っており、言語で許可されていることと許可されていないことを知っています。私の質問は、自然に機能するように見えるのに、言語設計者がこれを許可しないことを選択した理由です。

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

c# - デフォルトパラメータをコンパイル時定数として制約する理由

なぜこれがコンパイルされないのか疑問に思っています:

メッセージ付き

「「someGuid」のデフォルトのパラメータ値はコンパイル時定数でなければなりません」

オーバーロードされたバージョンはコンパイルされますが:

言い換えれば、コンパイラが最初の状況を2番目の状況に変換しないのはなぜですか?このデザインの選択の背後にあるものは何ですか?

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

c++ - C++で渡された参照のデフォルト引数を持つ

typedef以下のように、'dデータ型を参照する関数がいくつかあります。

boost::function以下に定義されているように、ハンドラー関数のマップもあります。

これを定義したのは、使用している100を超えるハンドラー関数を使用して、キーを読み取って呼び出しhandlers[key](bytes, d);、関数を実行するだけで、さまざまなデータ型に対して3つのif / elsesのみが必要になるようにしました(必要なデータ型を知っている私が入らない別の問題。それは質問とは無関係です)。これは期待どおりに機能します。

私の問題は、少数の関数がディクショナリを利用せず、ハンドラーの外部のコンテキストで役立つことです(たとえば、バイトのストリームを準備してそれをlong intに変換する関数)。dictが事前定義されていないコンテキストからこの関数を呼び出すには、使用されない役に立たないdictを作成する必要があります。

または、関数を実行する必要があります。

NULLまたは空のdictなどのデフォルトの引数を使用して定義しようとすると、コンパイラエラーが発生します。

参照の代わりにポインターを渡すためにコードを完全に書き直す必要なしに、私が望むことを行う方法はありますか?

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

c++ - C++ float 配列をデフォルトのパラメータとして

私はC ++にまったく慣れていないので、これを機能させることができません。申し訳ありませんが、私は常にメモリポインタとその観点から考えるのに役立たない言語を扱ってきたので、これはばかげた質問かもしれません.

float 配列をデフォルト パラメータとして渡したい。このような:

いくつかの異なる構文で試しましたが、次のようなエラーが常に発生しています

編集(ただし、メモリリークあり):

わかりました、この答えに私はこのように解決しました:

いくつかの長所または短所?

編集2

受け入れられた答えを見る