ループはクラスの複数のインスタンスを作成できますが、行ごとに作成することはできませんか?

user3621675

したがって、carIdというプロパティintを持つCARという単純なクラスがあります。

このようなクラスの複数のインスタンスを作成しようとすると、次のようになります。

Car *car = [[Car alloc] init];
car.carId = 1;

Car *car = [[Car alloc] init];
car.carId = 2;

それは機能しません、私は理解しています。

しかし、私がそうするなら:

for (int i = 0; i < 10 ; i++) {
  Car *car = [[Car alloc] init];
  car.carId = i;
}

できます。それ、理由がわかりません。

誰かが理由を説明することができますか?ありがとう!

民間

{ ... }コードのブロックは、変数を宣言できるスコープと呼ばれる「コンテキスト」を作成します。同じコンテキストまたは親コンテキストに同じ変数を2回持つことはできません(変数は子に継承されます)。明らかな理由で、そうでなければコンパイラはあなたが話しているものを理解することができません)。

に:

for (int i = 0; i < 10 ; i++) {
  Car *car = [[Car alloc] init];
  car.carId = i;
}

carコンテキストで呼び出される変数は1つだけです。

に:

Car *car = [[Car alloc] init];
car.carId = 1;

Car *car = [[Car alloc] init];
car.carId = 2;

あなたは2つ持っています。次のように変更した場合:

Car *car1 = [[Car alloc] init];
car1.carId = 1;

Car *car2 = [[Car alloc] init];
car2.carId = 2;

できます。

または、その変数を再利用することもできます(ただし、どこかに保存しない限り、最初の変数への参照は失われます)。

Car *car = [[Car alloc] init]; // First car
car.carId = 1;

car = [[Car alloc] init]; // Second car, but now you just lost the first car reference unless you added it to a collection or something.
car.carId = 2;

これを実行して2つのコンテキストを作成することもできますが、その場合、変数はそれらのコンテキストの外部(つまり、親コンテキスト)では使用できません。

{
    Car *car = [[Car alloc] init];
    car.carId = 1;
}
{
    Car *car = [[Car alloc] init];
    car.carId = 2;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaでクラスの複数のインスタンスを作成することはできません

分類Dev

Pythonで複数のクラスインスタンスを作成することはできません

分類Dev

テーブルに複数のクラスター化インデックスを作成することはできません

分類Dev

`クラスNAME`のインスタンスを作成することはできません(少なくともクリエーターに存在するが)

分類Dev

スコープごとに複数のRectを作成することはできません

分類Dev

なぜ型パラメータのインスタンスを作成することはできませんか?

分類Dev

ノー文字列引数のコンストラクタ/工場:java.util.LinkedHashMapのインスタンスを作成することはできません

分類Dev

クラスのインスタンスを作成するときにパラメータを渡すことができません

分類Dev

不思議なことに繰り返されるテンプレートパターン-複数の派生クラスを作成することはできませんか?

分類Dev

ViewModelには、クラスのAndroidのJava MVVMのインスタンスを作成することはできません。

分類Dev

複数のオブジェクトセットはサポートされていません。オブジェクトセット「ApplicationUsers」と「Users」の両方に、ロールを作成するときにApplicationUserのインスタンスを含めることができます

分類Dev

ハンドラーの作成時にAndroidシステムサービスを直接インスタンス化することはできません

分類Dev

Codableクラスのインスタンスを作成するときに、呼び出しでパラメーター 'from'の引数がありません

分類Dev

「ValueError:重複した軸からインデックスを再作成できません」というエラーが発生するのはなぜですか?

分類Dev

C#グループボックスのタイトルをラジオボタンとして作成することはできますか?

分類Dev

クラスのスコープ内でインスタンスを再作成せずに、クラス内でインスタンスのメソッドを呼び出すことはできますか?

分類Dev

複数のノードでcouchbaseクラスターを実行することはできません

分類Dev

ジェネリックを使用せずに、Javaクラスのフィールドを複数のタイプにすることはできますか?

分類Dev

`com.test.FilterModel`のインスタンスを作成することはできません。文字列値からデシリアライズするには、no文字列引数コンストラクタ/ファクトリメソッド

分類Dev

配列のサイズまで任意の量の引数を受け入れることができるカスタム配列クラスのコンストラクターを作成するにはどうすればよいですか?

分類Dev

別のWPFアプリからWPFアプリケーションアセンブリをロードすると、エラーが発生します:同じAppDomainに複数のSystem.Windows.Applicationインスタンスを作成できません

分類Dev

グループごとに欠落している時間を追加している間、重複する軸からインデックスを再作成することはできません

分類Dev

vhdlのforループでインデックスにアクセスすることは可能ですか?エラー:インデックス付きの名前プレフィックスタイプnatrualは配列タイプではありません

分類Dev

スーパークラスを使用してビルダーを作成する場合、親は子クラスのインスタンスを返すことができません

分類Dev

どのように私は「スーパー()」に引数を渡すために無用パススルー子クラスのコンストラクタを作成しないようにすることができますか?

分類Dev

データベースごとに複数のコレクションを作成できますか?

分類Dev

どのようにTypeErrorを防ぐことができますか:Pythonリストをnumpy配列にコピーするとき、リストのインデックスはタプルではなく整数でなければなりませんか?

分類Dev

アナライザーMicrosoft.AspNetCore.Mvc.Analyzers.AvoidHtmlPartialAnalyzerのインスタンスをC:\から作成することはできません。

分類Dev

Python:クラスAはクラスBとCのインスタンスを作成しますが、BとCはどのようにしてAまたは相互に関数を呼び出すことができますか?

Related 関連記事

  1. 1

    Javaでクラスの複数のインスタンスを作成することはできません

  2. 2

    Pythonで複数のクラスインスタンスを作成することはできません

  3. 3

    テーブルに複数のクラスター化インデックスを作成することはできません

  4. 4

    `クラスNAME`のインスタンスを作成することはできません(少なくともクリエーターに存在するが)

  5. 5

    スコープごとに複数のRectを作成することはできません

  6. 6

    なぜ型パラメータのインスタンスを作成することはできませんか?

  7. 7

    ノー文字列引数のコンストラクタ/工場:java.util.LinkedHashMapのインスタンスを作成することはできません

  8. 8

    クラスのインスタンスを作成するときにパラメータを渡すことができません

  9. 9

    不思議なことに繰り返されるテンプレートパターン-複数の派生クラスを作成することはできませんか?

  10. 10

    ViewModelには、クラスのAndroidのJava MVVMのインスタンスを作成することはできません。

  11. 11

    複数のオブジェクトセットはサポートされていません。オブジェクトセット「ApplicationUsers」と「Users」の両方に、ロールを作成するときにApplicationUserのインスタンスを含めることができます

  12. 12

    ハンドラーの作成時にAndroidシステムサービスを直接インスタンス化することはできません

  13. 13

    Codableクラスのインスタンスを作成するときに、呼び出しでパラメーター 'from'の引数がありません

  14. 14

    「ValueError:重複した軸からインデックスを再作成できません」というエラーが発生するのはなぜですか?

  15. 15

    C#グループボックスのタイトルをラジオボタンとして作成することはできますか?

  16. 16

    クラスのスコープ内でインスタンスを再作成せずに、クラス内でインスタンスのメソッドを呼び出すことはできますか?

  17. 17

    複数のノードでcouchbaseクラスターを実行することはできません

  18. 18

    ジェネリックを使用せずに、Javaクラスのフィールドを複数のタイプにすることはできますか?

  19. 19

    `com.test.FilterModel`のインスタンスを作成することはできません。文字列値からデシリアライズするには、no文字列引数コンストラクタ/ファクトリメソッド

  20. 20

    配列のサイズまで任意の量の引数を受け入れることができるカスタム配列クラスのコンストラクターを作成するにはどうすればよいですか?

  21. 21

    別のWPFアプリからWPFアプリケーションアセンブリをロードすると、エラーが発生します:同じAppDomainに複数のSystem.Windows.Applicationインスタンスを作成できません

  22. 22

    グループごとに欠落している時間を追加している間、重複する軸からインデックスを再作成することはできません

  23. 23

    vhdlのforループでインデックスにアクセスすることは可能ですか?エラー:インデックス付きの名前プレフィックスタイプnatrualは配列タイプではありません

  24. 24

    スーパークラスを使用してビルダーを作成する場合、親は子クラスのインスタンスを返すことができません

  25. 25

    どのように私は「スーパー()」に引数を渡すために無用パススルー子クラスのコンストラクタを作成しないようにすることができますか?

  26. 26

    データベースごとに複数のコレクションを作成できますか?

  27. 27

    どのようにTypeErrorを防ぐことができますか:Pythonリストをnumpy配列にコピーするとき、リストのインデックスはタプルではなく整数でなければなりませんか?

  28. 28

    アナライザーMicrosoft.AspNetCore.Mvc.Analyzers.AvoidHtmlPartialAnalyzerのインスタンスをC:\から作成することはできません。

  29. 29

    Python:クラスAはクラスBとCのインスタンスを作成しますが、BとCはどのようにしてAまたは相互に関数を呼び出すことができますか?

ホットタグ

アーカイブ