問題タブ [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# - コード コントラクトは、チェーンされたコンストラクターが呼び出される前に評価されることが保証されていますか?
コード コントラクトを使い始める前は、コンストラクター チェーンを使用するときに、パラメーターの検証に関連して厄介なことに遭遇することがありました。
これは (不自然な) 例で説明するのが最も簡単です:
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()
それで、私の実際の質問に進みます:
- この動作はどこかに文書化されていますか?
- このような連鎖コンストラクターのコード コントラクトを記述するときに、この動作に依存できますか?
- これに近づくべき他の方法はありますか?
java - Java コンストラクターの連鎖
こんにちは、Java でのコンストラクターの連鎖について学んでいて、いくつか質問がありました...
まず第一に、いつこれを使用する必要があるか説明してもらえますか? 頭のてっぺんから、私は真剣に状況を考えることができません。
この例では、引数のないコンストラクター内で別のコンストラクターを呼び出します。今後使用するために、この新しい「ジェームズ・ボンド」オブジェクトにアクセスするにはどうすればよいですか?
/li>
c++ - Call Base Default コンストラクター テンプレート クラス
問題は、継承されたテンプレート クラスから基本コンストラクターを呼び出す方法です。FixedQueue を作成し、std::queue でいくつかの関数をオーバーロードしたいと考えています。したがって、std:queue が基本クラスです。c++11 以降、キーワード using を使用してベースを呼び出すことができ、これが特殊なクラスの場合は機能しますが、テンプレート クラスでは機能しません。
さらに、std::queue で定義されたコンストラクターを呼び出すだけの古い C++ 標準を使用してみました。しかし、うまくいきません。
hファイル
cpp ファイル
メインファイル。
質問はこうです。基本クラス std::queue で定義されたコンストラクターにコンストラクターをチェーンするにはどうすればよいですか。テンプレートのことは私を殺しています。
これは、clang から取得したエラー メッセージであり、通常の未定義の参照です。
誰かが「使用」または昔ながらの方法でこれを行う方法を知っていれば、私は両方に満足しています. 前もって感謝します
c# - アウトプットが期待通りの成果を上げていない
これは私のコードです:
これは私の出力です:
私の質問は:
アイテム 1、3、および 5 の在庫番号を 10000、10001、および 10002 にする代わりに、上記のように取得しています。なぜ理解できないのですか?
java - スーパークラス コンストラクターでローカル変数にアクセスする
このコンストラクターを持つスーパークラスがあります。
次に、同じコンストラクターを使用したいサブクラスがありますが、さらに 2 つの文字列を追加します。これは私のコードです:
このコードを使用すると、結果が指定されていないというエラーが発生します。どうすればこれを修正できますか?
c# - CodeContracts は、基本コンストラクターに既に存在する欠落している前提条件に誤ってフラグを立てます
次のクラス階層があるとします。
コンパイルすると、次の CodeContracts エラーが発生しますFoo
。
検証が基本クラスで既に行われていることを CodeContracts に認識させる方法はありますか?