タグ付けされた質問 「initializer」

22
C ++の静的コンストラクタ?プライベート静的オブジェクトを初期化する必要があります
プライベート静的データメンバー(すべての文字a〜zを含むベクトル)を持つクラスが必要です。JavaまたはC#では、クラスのインスタンスを作成する前に実行される「静的コンストラクタ」を作成し、クラスの静的データメンバーを設定するだけです。(変数は読み取り専用で、1度だけ設定する必要があるため)1回だけ実行され、クラスの関数であるため、プライベートメンバーにアクセスできます。ベクトルが初期化されているかどうかを確認し、初期化されていない場合は初期化するコードをコンストラクターに追加できますが、これにより多くの必要なチェックが導入され、問題の最適な解決策とは思えません。 変数は読み取り専用であるため、それらはpublic static constである可能性があるため、クラスの外で一度設定できると思いますが、もう一度、それは一種の醜いハックのように思えます。 インスタンスコンストラクターで初期化したくない場合、クラスにプライベート静的データメンバーを含めることはできますか?

5
C#3.0オブジェクト初期化コンストラクターの括弧がオプションなのはなぜですか?
C#3.0オブジェクト初期化構文により、パラメーターのないコンストラクターが存在する場合に、コンストラクターで括弧の開閉ペアを除外できるようです。例: var x = new XTypeName { PropA = value, PropB = value }; とは対照的に: var x = new XTypeName() { PropA = value, PropB = value }; なぜコンストラクタの開き括弧と閉じ括弧のペアが後でオプションになるのか、私は興味がありXTypeNameますか?

8
名前のないJavaメソッドを呼び出す
私は以下のコードを見ていて、少し奇妙なものを見つけました: public class Sequence { Sequence() { System.out.print("c "); } { System.out.print("y "); } public static void main(String[] args) { new Sequence().go(); } void go() { System.out.print("g "); } static { System.out.print("x "); } } System.outwith "y"はメソッド宣言に属していないので、これはコンパイルエラーになると予想していました{ }。なぜこれが有効なのですか?このコードがどのように呼び出されるか、または呼び出されるべきかわかりません。 これを実行するときにx y c gも生成static { }されますが、シーケンスコンストラクタの前にgetが呼び出されるのはなぜですか?
100 java  initializer 

2
「内部」保護レベルのため、初期化子にアクセスできません
私はいくつかのプロトコルを持っています LoginStrategy public protocol LoginStrategy { func login(_ viewController: UIViewController) func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) func getUserId() -> String } および2つのクラス: LoginProvider public class LoginProvider { public let strategy: LoginStrategy public func login(_ …

2
Kotlinの静的初期化ブロック
Kotlinの静的初期化ブロックに相当するものは何ですか? Kotlinは静的なものを持たないように設計されていることを理解しています。同等のセマンティクスを持つものを探しています-クラスが最初にロードされたときにコードが1回実行されます。 私の特定のユースケースは、Android AppCompatライブラリからDayNight機能を有効にしたい場合で、命令は、Applicationクラスの静的初期化ブロックにコードを配置するように指示しています。

2
変数の初期化を飛び越えるのは不適切な形式ですか、それとも未定義の動作を引き起こしますか?
このコードを考えてみましょう: void foo() { goto bar; int x = 0; bar: ; } へのジャンプが変数の初期化をバイパスするため、GCCとClang はそれを拒否しbar:ます。MSVCはまったく文句を言いません(xafter を使用bar:すると警告が表示されます)。 同じことをaで行うことができますswitch: void foo() { switch (0) { int x = 0; case 0: ; } } 3つのコンパイラすべてがエラーを出力するようになりました。 これらのスニペットの形式は不適切ですか?または、それらはUBを引き起こしますか? 以前はどちらも形式が正しくないと思っていましたが、標準の魅力的な部分を見つけることができません。[stmt.goto]は、このことについて何も言われ、どちらもしないん[stmt.select] 。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.