Rustについて基本からしっかり学んでいく本連載。第7回は、Rustの「構造体」と「列挙型」について。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Rustについて基本からしっかり学んでいく本連載。今回は、構造体と列挙型などについて紹介していきます。
構造体は、C/C++ではおなじみの言語要素です。基本的な役割も一緒です。本連載2回目でタプルについて紹介しましたが、タプルは異なるデータ型の値を同時に持てるだけだったのに対して、構造体はそれらにも名前を付けて区別できる点が異なります。
早速、構造体の定義を見てみましょう。構造体は、以下のようにstruct文で定義します。
struct Person { // 構造体の名前は「Person」 name: String, // String型のフィールド「name」 birth: u32, // 以下も同様 sex: char, height: f64, weight: f64, }
これは、Person構造体の定義です。中かっこ({ })の中に構造体を構成する要素(これをフィールドと呼びます)を並べていきます。
フィールドとは、名前とデータ型の組み合わせです。これを、カンマで区切って必要なだけ並べていきます。この例では、
を持つ構造体Personが定義されたことになります。
最後のフィールドのあとのカンマはなくても間違いではありませんが、このように付けても構いません。あとからフィールドを加える際にカンマ漏れをなくすには、最後のフィールドにもカンマを付けるのが望ましいでしょう。
構造体を実体化することを、インスタンス化といいます。オブジェクト指向プログラミングにおいてクラスからオブジェクトを生成する「インスタンス化する」と同じ意味です。構造体のインスタンス化は、以下のように行います。ここでも、最後のフィールドのカンマが許容されます。これは構造体に限らず、Rustの共通した振る舞いです。
Copyright © ITmedia, Inc. All Rights Reserved.