問題タブ [initialization]

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 に答える
15022 参照

objective-c - スーパークラス初期化子を使用したクラスの初期化

私は2つのクラスを持っています。1つはもう1つのサブクラスです(たとえばAnimal、 とDog)。スーパークラスにはいくつかの初期化子 (たとえばinitAnimal) があり、サブクラスにはいくつかの初期化子 (たとえばinitDog) があります。問題は、(コンパイラの観点から) のようなことを行うことが完全に合法であることですDog *adog = [[Dog alloc] initAnimal]。スーパークラス初期化子を使用してクラスを初期化します。サブクラスには、初期化されていることを確認したい追加のインスタンス変数がいくつかある可能性があるため、これは好きではありません。ヘッダー ファイルを調べれば解決しますが、コンパイラにチェックさせる簡単な方法はありますか? 私はひどく明白な何かが欠けていると感じていますが、私はそれに指を置くことができません:-)

更新:initDoginitAnimalは最良の例ではありませんでした。2 つのまったく異なる初期化子 ( initforAnimalinitWithFurforなどDog) を意味していました。すべての犬にファーを割り当てたい場合は、イニシャライザーのファー部分を作成して、ファーなしで犬オブジェクトを取得できないようにします。しかし、スーパークラスinitでインスタンスを誤って初期化することは依然として簡単であり、私はうんざりしています。

指定された初期化子を取り上げてくれてありがとう、ジェイソン。以前は思いつきませんでしたが、スーパークラスの指定された初期化子をオーバーロードして、そこに適切なデフォルトを設定することができました。しかし、クラス自体のイニシャライザ以外のイニシャライザを使用することを何らかの方法で違法にすることができれば、なお良いと思います。他にアイデアはありますか?

0 投票する
3 に答える
59990 参照

c++ - c++ヘッダーで配列をどのように宣言しますか?

これは、次のような他のいくつかの質問に関連しています: this、および私の他のいくつかの質問。

この質問や他の質問では、文字列配列を宣言して初期化できることがわかります。たとえば、次のようになります。

これは、問題なく関数の実装で、またはスコープ外の .cpp ファイルの本体で実行できます。

私がやりたいことは、私が使用しているクラスのメンバーとして、次のような配列を持つことです:

しかし、コンパイラが不平を言い、その理由がわかりません。クラス定義のワンステップで、このような配列を宣言して初期化することは可能ですか? より良い代替手段はありますか?

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

iphone - コンビニエンス メソッドと init メソッドのメモリ使用量

最近、iPhoneのメモリ管理について調べた際、同じオブジェクトでコンビニエンスメソッドとinitメソッドを比較してみました。たとえば、ダウンロードした NSData を表示する UIImageView があります。

便利な方法:

初期化方法:

ビューを行ったり来たりしてメモリ使用量を増やし、「Simulate Memory Warning」をクリックすると、アプリのメモリ使用量がコンビニエンス メソッドで 20MB から 18MB になり、init メソッドですぐに 20MB から 13MB になりました。

また、便利なメソッドの自動リリースでリリースする時間を与えるために、アプリを待って操作しました。でもあまり落ちませんでした。

オートリリースとリリース以外に、他に何が違いをもたらしましたか?

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

initialization - C、C ++、C#、Java、Pythonでの宣言、定義、初期化

上記の各言語での用語の意味は何ですか?この点で、なぜ言語が異なるのですか(どこで行っても)。

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

java - Java Web アプリの初期化

いくつかの jsp ページ、サーブレット、および pojo を含む単純な Web アプリケーションがあります。リクエストが行われる前に接続プールを初期化したいと考えています。これを行う最善の方法は何ですか?アプリが最初にデプロイされたときに実行できますか?それとも、最初のリクエストが来るまで待つ必要がありますか?

0 投票する
9 に答える
213328 参照

python - Python で初期容量のリストを作成する

次のようなコードがよく発生します。

リストに何千もの要素を追加しようとしている場合、新しい要素に合わせてリストのサイズを常に変更する必要があるため、これは非常に遅くなります。

Java では、初期容量を持つ ArrayList を作成できます。リストがどれだけ大きくなるかある程度わかっている場合、これははるかに効率的です。

このようなコードは、多くの場合、リスト内包表記にリファクタリングできることを理解しています。ただし、for / whileループが非常に複雑な場合、これは実行不可能です。私たち Python プログラマーに相当するものはありますか?

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

objective-c - self を id にキャストする必要があるのはなぜですか?

(id) 引数を取る init メソッドがあります。

私はそれを次のように呼ぼうとしています:

しかし、XCode は、引数が「明確な Objective-C 型」であることについて不平を言っています (通常、型の不一致または間接エラーのレベルを示します)。

self を (id) に明示的にキャストすると、警告は消えます。どちらの場合でも、コードは期待どおりに実行されます。興味深いことに、次の行で、id を受け取る別のメソッドに self を渡していますが、これは正常に機能します。

何か微妙なものが欠けているのではないかと思っています-それともコンパイラの特異性ですか?

それが必要な理由がはっきりするまで、キャストするだけでは完全に快適ではありません。

[編集]

追加のコードを提供するよう求められました。他に関連するものがたくさんあるかどうかはわかりません。これが呼び出しを行う実際のコードです。それ自体が init メソッド内にあることに注意してください。initWithSource警告を出しているのは への呼び出しです:

そして、呼び出される init メソッドは次のとおりです。

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

vb.net - 新しい System.Collections.Generic.Dictionary を文字列のキーと値のペアで初期化することは可能ですか?

System.Collections.Generic.Dictionary1 つのステートメントで文字列のキーと値のペアを使用してオブジェクトを作成し、初期化することは可能ですか?

私は、文字列の配列のコンストラクターの線に沿って考えています..

例えば

これがシンタックス シュガーのようなものであることが判明した場合は、.Net 2.0 (Visual Studio 2005) と Visual Basic で使用できる回答を希望します。それがあなたを先延ばしにしないでください;o)

0 投票する
16 に答える
997078 参照

c - C プログラミング言語標準に従って構造体を初期化する方法

構造体要素を初期化し、宣言と初期化に分割したい。これは私が持っているものです:

MY_TYPEこれは、C プログラミング言語標準 (C89、C90、C99、C11 など) に従ってのローカル変数を宣言および初期化する方法ですか? または、より良いもの、または少なくとも機能するものはありますか?

更新必要に応じてすべてのサブ要素を設定する静的な初期化要素ができました。

0 投票する
12 に答える
58558 参照

c++ - C++ の静的初期化順序の問題を見つける

静的な初期化順序 fiascoでいくつかの問題に遭遇しました。発生する可能性のあるものを見つけるために、大量のコードをくまなく調べる方法を探しています。これを効率的に行う方法について何か提案はありますか?

編集:静的な初期化順序の問題を解決する方法についていくつかの良い答えを得ていますが、それは私の質問ではありません。この問題の対象となるオブジェクトを見つける方法を知りたいです。この点に関しては、Evan の回答がこれまでのところ最良のようです。valgrind を使用できるとは思いませんが、同様の機能を実行できるメモリ分析ツールがあるかもしれません。これは、特定のビルドの初期化順序が間違っていて、ビルドごとに順序が変わる可能性がある場合にのみ問題をキャッチします。おそらく、これをキャッチする静的分析ツールがあるでしょう。私たちのプラットフォームは、AIX 上で動作する IBM XLC/C++ コンパイラーです。