構造体内でこの配列の配列を初期化するにはどうすればよいですか?

ショート

チュートリアルからさびを学ぼうとしています。コンウェイのライフゲームから始めるのがいいと思いました。

このGrid :: new()fnの書き方を理解するのに苦労しています。

これが私がこれまでに持っているものです:

enum Cell {
    alive, dead
}
impl Cell {
    fn new() -> Cell {
        alive
    }
struct Grid {
    priv inner: [ [Cell, .. GRID_SIZE], .. GRID_SIZE],
}

impl Grid {
    fn new() {
        Grid { inner: ???? }
    }
}

..。

fn main () {
    let grid = Grid::new(); // Stack allocated grid (internal stack allocad array)
}

私が欲しいのは、グリッドがすべての値「生きている」セルで初期化されることです。

telotortium

Grid::newGrid::innerネストされた固定サイズの配列リテラルで初期化する必要があります。これは型と同じように記述されますが、Cell型の代わりに配列を初期化する値を使用します

impl Grid {
    fn new -> Grid {
        Grid { inner: [[alive, ..GRID_SIZE], ..GRID_SIZE] }
    }
}

コンストラクター関数を使用する場合Cell::new()alive代わりに使用できます。)

このinnerメンバーは、次のように式で使用できます(priv現在のモジュール外のコードの可視性のみを制御することに注意してください)。

let grid = Grid::new();
let nested_fixed_sized_array: [[Cell, ..GRID_SIZE], ..GRID_SIZE] = grid.inner;
let fixed_sized_array: [Cell, ..GRID_SIZE] = grid.inner[0];
let cell_element: Cell = grid.inner[0][0];

Rustでは、この例で使用されているネストされた配列は、固定サイズの配列の特殊なケースです。これがどのように機能するかを確認するには、ベクトルと文字列のチュートリアルセクションを参照してください特に、~[T]ヒープに動的に割り当てられ、長さを変更できる(可変の場合)ベクトル(タイプとは異なり、固定サイズの配列の長さはタイプ([T, ..LENGTH])に埋め込まれているため、変更できません。作成後にサイズを変更します。Tそれ自体は、固定サイズの型またはポインターのいずれかである必要があります。ただし、代わりに、固定サイズの配列は、スタックに直接割り当てたり、struct定義(などGrid)に埋め込んだりできる値型です

固定サイズ配列はそれ自体が固定サイズ型であるため、ネストされた固定サイズ配列は、固定サイズ配列が固定サイズ配列の要素型である特殊なケースにすぎません。特に、によって消費されるメモリGrid::innerは正確ですGRID_SIZE * GRID_SIZE * sizeof(Cell)(アライメントを無視した場合)。また~[T, ..LENGTH]、行列の列数はわかっているが行数はわかっていない場合は、固定サイズの配列のベクトルも役立ちます。

引数がスライス(type &[T])の場合、ベクトルと固定サイズの配列の両方を関数引数として使用できます

一部の詳細は、現在からRust1.0のリリースまでに変更される可能性があります。興味がある場合は、Rust subredditで「動的サイズのタイプ」を検索すると、提案された変更とその背後にある理由が明らかになるはずです。または、Redditまたは#rustIRCチャネルでいつでも質問できます。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

memcpy、strcpy、または{...}を使用せずに、構造体内のchar配列を直接初期化するにはどうすればよいですか?

分類Dev

構造体内のunsignedchar配列の内容を出力するにはどうすればよいですか?

分類Dev

構造体内の配列を動的に更新するにはどうすればよいですか?

分類Dev

Cのtypdef構造体内の配列に値を割り当てるにはどうすればよいですか?

分類Dev

構造体の配列を初期化するにはどうすればよいですか

分類Dev

構造体の配列を初期化するにはどうすればよいですか

分類Dev

mallocを使用して作成された別の構造体内の構造体の配列にmallocを使用するにはどうすればよいですか?

分類Dev

構造体内にある配列に値を追加するにはどうすればよいですか(Swift)

分類Dev

cの構造体内の構造体配列に値を割り当てるにはどうすればよいですか?

分類Dev

構造体の配列内で配列変数を使用するにはどうすればよいですか?

分類Dev

このクラスを配列で初期化するにはどうすればよいですか?

分類Dev

golangの構造体内で構造体(json出力を格納する)型の配列をどのように初期化できますか?

分類Dev

CからC#までの構造体内でアンマネージ可変長C配列を取得するにはどうすればよいですか?

分類Dev

BCPLで配列の配列を初期化するにはどうすればよいですか?

分類Dev

構造体へのポインタを保持するグローバル配列を初期化するにはどうすればよいですか?

分類Dev

構造体の配列をcでグローバルに初期化するにはどうすればよいですか?

分類Dev

構造体内の配列に動的に割り当てられたメモリを解放するにはどうすればよいですか?

分類Dev

VB.NETの構造内に作成されたオブジェクト配列を初期化するにはどうすればよいですか?

分類Dev

関数の出力でconst配列構造体フィールドを初期化するにはどうすればよいですか?

分類Dev

構造体の配列でintポインタメンバーを初期化して動的に割り当てるにはどうすればよいですか?

分類Dev

Rustの構造体内に動的な2D配列を実装するにはどうすればよいですか?

分類Dev

Coldfusionで、配列内の構造体に「列」を追加するにはどうすればよいですか?

分類Dev

Coldfusionで、配列内の構造体に「列」を追加するにはどうすればよいですか?

分類Dev

Javaで長さ0の文字列配列を初期化するにはどうすればよいですか?

分類Dev

C#で文字列配列のリストを初期化するにはどうすればよいですか?

分類Dev

個人構造の文字列を初期化するにはどうすればよいですか

分類Dev

複数の配列を持つこの構造体を別の一時的な構造体にコピーするにはどうすればよいですか?

分類Dev

配列に含まれる構造体の要素を印刷するにはどうすればよいですか

分類Dev

構造体配列のすべての要素を別の構造体配列に追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    memcpy、strcpy、または{...}を使用せずに、構造体内のchar配列を直接初期化するにはどうすればよいですか?

  2. 2

    構造体内のunsignedchar配列の内容を出力するにはどうすればよいですか?

  3. 3

    構造体内の配列を動的に更新するにはどうすればよいですか?

  4. 4

    Cのtypdef構造体内の配列に値を割り当てるにはどうすればよいですか?

  5. 5

    構造体の配列を初期化するにはどうすればよいですか

  6. 6

    構造体の配列を初期化するにはどうすればよいですか

  7. 7

    mallocを使用して作成された別の構造体内の構造体の配列にmallocを使用するにはどうすればよいですか?

  8. 8

    構造体内にある配列に値を追加するにはどうすればよいですか(Swift)

  9. 9

    cの構造体内の構造体配列に値を割り当てるにはどうすればよいですか?

  10. 10

    構造体の配列内で配列変数を使用するにはどうすればよいですか?

  11. 11

    このクラスを配列で初期化するにはどうすればよいですか?

  12. 12

    golangの構造体内で構造体(json出力を格納する)型の配列をどのように初期化できますか?

  13. 13

    CからC#までの構造体内でアンマネージ可変長C配列を取得するにはどうすればよいですか?

  14. 14

    BCPLで配列の配列を初期化するにはどうすればよいですか?

  15. 15

    構造体へのポインタを保持するグローバル配列を初期化するにはどうすればよいですか?

  16. 16

    構造体の配列をcでグローバルに初期化するにはどうすればよいですか?

  17. 17

    構造体内の配列に動的に割り当てられたメモリを解放するにはどうすればよいですか?

  18. 18

    VB.NETの構造内に作成されたオブジェクト配列を初期化するにはどうすればよいですか?

  19. 19

    関数の出力でconst配列構造体フィールドを初期化するにはどうすればよいですか?

  20. 20

    構造体の配列でintポインタメンバーを初期化して動的に割り当てるにはどうすればよいですか?

  21. 21

    Rustの構造体内に動的な2D配列を実装するにはどうすればよいですか?

  22. 22

    Coldfusionで、配列内の構造体に「列」を追加するにはどうすればよいですか?

  23. 23

    Coldfusionで、配列内の構造体に「列」を追加するにはどうすればよいですか?

  24. 24

    Javaで長さ0の文字列配列を初期化するにはどうすればよいですか?

  25. 25

    C#で文字列配列のリストを初期化するにはどうすればよいですか?

  26. 26

    個人構造の文字列を初期化するにはどうすればよいですか

  27. 27

    複数の配列を持つこの構造体を別の一時的な構造体にコピーするにはどうすればよいですか?

  28. 28

    配列に含まれる構造体の要素を印刷するにはどうすればよいですか

  29. 29

    構造体配列のすべての要素を別の構造体配列に追加するにはどうすればよいですか?

ホットタグ

アーカイブ