問題タブ [constructor-chaining]
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.
c++ - 浮動小数点へのintの問題
これが私の問題です。0から1の範囲の4つのfloatから色を作成するコンストラクターがあります。0から255intとの互換性を追加したいので、次のような別のコンストラクターがあります。
ただし、これは機能しません。rgbaフロートコンポーネントは奇妙な数になります。これの何が問題になっていますか?
ありがとう
c# - 中間変数を使用したコンストラクターの連鎖
私は、適切な解決策を見つけるのに苦労している、オーバーロードされたコンストラクターに関する次の状況を抱えています。コンストラクター チェーンで中間代入を使用する方法がわかりません。
以下は有効ではありませんが、私がやりたいことを示しています
上記を有効なコードで記述する唯一の方法は、
これは醜いコードであるだけでなく、データベース呼び出しを 2 回行う必要があります (コンパイラがそれを解決できるほど賢い場合を除きますが、私には疑問です)。
上記の書き方で何か良い方法はありませんか?
c# - 基本コンストラクター呼び出しと組み合わせたコンストラクター チェーン
私は次のものを持っているとしましょう:
Derived の両方のオーバーロードで仮引数 n が必要であるため、このN = n;
行を繰り返さなければならないことに注意してください。
これで別のメソッドにカプセル化できることがわかりましたが、両方のオーバーロードから同じ 2 つのメソッドを呼び出す必要があります。それで、おそらくthis
と組み合わせて使用 することで、これを行うためのより「エレガントな」方法はありbase
ますか?
これは、1 つの引数を取るプライベート コンストラクターを持つことができs
、他の 2 つのオーバーロードがそれを呼び出すことができるようにするためです...または、これは別のプライベート メソッドを持つことと同じでしょうか?
c# - C#コンストラクタチェーン-実行順序の変更
C#でコンストラクターをチェーンするときに実行順序を変更する方法を知りたいです。私が見た唯一のメソッドでは、現在のコンストラクターの外部で、チェーンコンストラクターを最初に呼び出す必要があります。
具体的には、次の例を見てください。
理想的には、これを行うことでコードの繰り返しを減らしたいと思います(この不自然な例では、あまり多くのコードが保存されていないことを認めますが、はるかに有益なコードで作業しています。わかりやすくするためにこの例を使用します):
これはVB.Netで可能ですが、C#では、別のコンストラクターの途中でコンストラクターを呼び出すことはできません。最初にFoo():this()構文を使用する場合のみです。
だから私の質問は、最初に他のコンストラクターを呼び出すことしかできないコロン構文を使用するのではなく、コンストラクターをチェーンするときにコンストラクターを呼び出す順序をどのように制御するのですか?
scjp - SCJP v6 (Sierra、Bates) 第 2 章、質問 12 コンストラクター呼び出しの解釈
これについてフィードバックをいただけますか
"new House("x ")" が文字列を送信すると、"House(String name)" コンストラクターが Building スーパークラス コンストラクター "Building(String name)" を呼び出すと予想していました。その場合、答えは「bn xh hn x」になります。ただし、答えは「bh hn x」です(はい、その出力で実行されます)。
質問 1. "new Building("string_value")" の呼び出し以外に、House が "Building(String name)" コンストラクターを呼び出す状況はありますか? (つまり、House コンストラクターの追加コード以外は? 2. オーバーロードされた Building (String name) コンストラクターではなく、引数のない Building コンストラクターが呼び出されるのはなぜですか?サブクラスから特定のスーパー コンストラクターを呼び出す必要がある場合があります。
参照しやすいようにコードが含まれています。
答えは「bh hn x」です。
よろしくスコット
c# - C#4では、オーバーロードされたコンストラクターを持つ親のサブクラスに、オプションのパラメーターを持つコンストラクターを含めるにはどうすればよいですか?
オーバーロードされたコンストラクターを持つ親クラスがあり、オプションのパラメーターを持つコンストラクターを持つサブクラスがあります。サブクラスのコンストラクターが、それ自体のオプションのパラメーターを保持しながら、親クラスのオーバーロードを公開する方法はありますか?
2つのクラスとそれらに必要なコンストラクターのサンプルコードを次に示します。
これは、親コンストラクターのオーバーロードを公開する必要がある他のサブクラスコンストラクターのメソッドシグネチャですが、問題はそれをどのように行うかです。
私は解決策を見つけたと思いますが、それが可能な限りきれいかどうかはわかりません。それが唯一の選択肢である場合に備えて、私はそれを答えとして投稿しました。
java - デフォルトのコンストラクターから例外をスローせずにJavaでコンストラクターをチェーンする
私はこれを読みました:コンストラクターでスローを使用できますか? -- それは私に正しい考えを与え、1 つの答えに導きましたが、あまり明確ではありませんでした。他にもいくつか読んだことがありますが、答えが見つかりませんでした。コンテキストについて学んだことを要約すると、基本的に、これはコンパイルされません...
...FileInputStream
コンストラクター (文字列コンストラクターから呼び出される) が FileNotFoundException をスローする可能性があるためです。次のように同じ例外をスローすることで、コンストラクターを作成できます。
私の質問は、デフォルトのファイル名文字列定数を単に使用するデフォルトのコンストラクター (引数なし) に関連しています。
これにより、コンストラクターが次のようにチェーンされます。
ExampleClass()
--> ExampleClass(<String>)
-->ExampleClass(<InputFileStream>)
このような場合、デフォルト コンストラクターでデフォルト値 (静的最終クラス メンバー) を使用して FileInputStream をインスタンス化 (チェーンのさらに下) することは可能ですが、throws FileNotFoundException
コードを使用する必要はありません (誰かがクラスを再スローするか例外を処理するか?
次のようなことができれば、自分で例外を処理します。
...しかし、「コンストラクター呼び出しはコンストラクターの最初のステートメントでなければならない」ため、これは不可能です。
この時点で.Netに慣れてきたので、本当にしたくない場合は、例外を処理することを余儀なくされたことはありません... :D
c++ - C++でのコンストラクタチェーン
コンストラクターチェーンについての私の理解は、クラスに複数のコンストラクター(オーバーロードされたコンストラクター)があり、そのうちの1つが別のコンストラクターを呼び出そうとすると、このプロセスはCONSTRUCTOR CHAININGと呼ばれ、C++ではサポートされないということです。最近、オンライン資料を読んでいるときにこの段落に出くわしました。
クラスをデフォルト値に再初期化するためのメンバー関数を記述したい状況に陥る可能性があります。おそらくすでにこれを行うコンストラクターがあるため、メンバー関数からコンストラクターを呼び出そうとする誘惑に駆られるかもしれません。前述のように、コンストラクター呼び出しの連鎖はC++では不正です。関数内のコンストラクターからコードをコピーすることもできますが、これは機能しますが、コードが重複することになります。この場合の最善の解決策は、コードをコンストラクターから新しい関数に移動し、コンストラクターに関数を呼び出してデータを初期化する作業を実行させることです。
コンストラクターを呼び出すメンバー関数もコンストラクターチェーンの対象になりますか?C++でこのトピックに光を当ててください。
php - PHP > クラスを複数のクラスに分割する方法は?
「Player」と呼ばれる非常に大きな PHP クラスがあります。
その中にはたくさんの関数があります (ほぼ 2000 行)。実際、私はこれらの関数を次のように使用します。
このクラスを複数のクラスに分割することは良い考えだと思いますが、方法がわかりません。たとえば、次のようなものを作成するにはどうすればよいですか。
このオブジェクト内にオブジェクトを作成する必要があると思いますが、そうすると、メインの「$player」のオブジェクト データにアクセスできません (たとえば、Stuff オブジェクトでは、$ でアクセスできません)。 Player オブジェクトの level 変数)。