問題タブ [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.

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

c# - コード コントラクトは、チェーンされたコンストラクターが呼び出される前に評価されることが保証されていますか?

コード コントラクトを使い始める前は、コンストラクター チェーンを使用するときに、パラメーターの検証に関連して厄介なことに遭遇することがありました。

これは (不自然な) 例で説明するのが最も簡単です:

Test(string)コンストラクターにコンストラクターをチェーンさせたいTest(int)ので、 を使用しますint.Parse()

もちろん、int.Parse()null 引数を持つのは好きではないので、sが null の場合、検証行に到達する前にスローされます。

そのチェックは役に立たなくなります。

それを修正する方法は?さて、私は時々これをしていました:

これは少し面倒です。失敗した場合のスタック トレースは理想的ではありませんが、機能します。

さて、Code Contracts が登場したので、私はそれらを使い始めました。

すべて順調です。それは正常に動作します。しかし、私はこれができることを発見しました:

そして、もしそうならvar test = new Test(null)、は の前にContract.Requires(s != null)実行されます。これは、テストを完全に廃止できることを意味します。 this(int.Parse(s))convertArg()

それで、私の実際の質問に進みます:

  • この動作はどこかに文書化されていますか?
  • このような連鎖コンストラクターのコード コントラクトを記述するときに、この動作に依存できますか?
  • これに近づくべき他の方法はありますか?
0 投票する
5 に答える
23143 参照

java - Java コンストラクターの連鎖

こんにちは、Java でのコンストラクターの連鎖について学んでいて、いくつか質問がありました...

  1. まず第一に、いつこれを使用する必要があるか説明してもらえますか? 頭のてっぺんから、私は真剣に状況を考えることができません。

  2. この例では、引数のないコンストラクター内で別のコンストラクターを呼び出します。今後使用するために、この新しい「ジェームズ・ボンド」オブジェクトにアクセスするにはどうすればよいですか?

    /li>
0 投票する
1 に答える
765 参照

c++ - Call Base Default コンストラクター テンプレート クラス

問題は、継承されたテンプレート クラスから基本コンストラクターを呼び出す方法です。FixedQueue を作成し、std::queue でいくつかの関数をオーバーロードしたいと考えています。したがって、std:queue が基本クラスです。c++11 以降、キーワード using を使用してベースを呼び出すことができ、これが特殊なクラスの場合は機能しますが、テンプレート クラスでは機能しません。

さらに、std::queue で定義されたコンストラクターを呼び出すだけの古い C++ 標準を使用してみました。しかし、うまくいきません。

hファイル

cpp ファイル

メインファイル。

質問はこうです。基本クラス std::queue で定義されたコンストラクターにコンストラクターをチェーンするにはどうすればよいですか。テンプレートのことは私を殺しています。

これは、clang から取得したエラー メッセージであり、通常の未定義の参照です。

誰かが「使用」または昔ながらの方法でこれを行う方法を知っていれば、私は両方に満足しています. 前もって感謝します

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

c# - アウトプットが期待通りの成果を上げていない

これは私のコードです:

これは私の出力です:

私の質問は:

アイテム 1、3、および 5 の在庫番号を 10000、10001、および 10002 にする代わりに、上記のように取得しています。なぜ理解できないのですか?

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

java - スーパークラス コンストラクターでローカル変数にアクセスする

このコンストラクターを持つスーパークラスがあります。

次に、同じコンストラクターを使用したいサブクラスがありますが、さらに 2 つの文字列を追加します。これは私のコードです:

このコードを使用すると、結果が指定されていないというエラーが発生します。どうすればこれを修正できますか?

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

c# - CodeContracts は、基本コンストラクターに既に存在する欠落している前提条件に誤ってフラグを立てます

次のクラス階層があるとします。

コンパイルすると、次の CodeContracts エラーが発生しますFoo

検証が基本クラスで既に行われていることを CodeContracts に認識させる方法はありますか?