#タプル
タプルとは複数のデータを並べて保持する複合データ型です。
実物を見るのが一番わかりやすいです。
fn main() {
let tpl = (2, 3.7, "文字列");
println!("tplの0番目のデータ:{}", tpl.0);
println!("tplの1番目のデータ:{}", tpl.1);
println!("tplの2番目のデータ:{}", tpl.2);
}
実行結果
tplの0番目のデータ:2
tplの1番目のデータ:3.7
tplの2番目のデータ:文字列
複数のデータをカンマ区切りで並べ、カッコで囲うことで、タプルになります。
タプルから特定のデータを取り出すときには順番を指定しなければいけません。以下のように書きます。
タプル
.
順番
順番は0から始まる点に注意してください。
複数のデータを一つの変数で扱う方法として最も簡単です。
#構造体(struct)
構造体はタプルのように複数の値を並べて保持する複合データ型ですが、あらかじめ定義しないと使えません。
以下のように書きます。
// 構造体名:Point
struct Point {
x: f32, // フィールド名:x , 型:f32
y: f32, // フィールド名:y , 型:f32
}
fn main() {
// Point型のデータを変数pに束縛する
let p = Point { x: 5.9, y: 1.1 };
// 構造体の各フィールドは名前を使って取り出すことができる
println!("フィールド名:x、 値:{}", p.x);
println!("フィールド名:y、 値:{}", p.y);
}
構造体の定義は以下のように書きます。
struct
構造体名
{
フィールド名:型
}
フィールド名:型
はカンマで区切れば何個でも書けます。また、最後のフィールドの後にカンマがあっても問題ありません。
構造体を持つ変数からフィールドの値を取り出すときは以下のように書きます。
構造体を持つ変数名
.
フィールド名
The Rust Programming Languageでは推奨されていませんが、フィールドの名前を省略した構造体を定義することが出来ます。
そのような構造体をタプル構造体と呼び、以下のように書きます。
// 構造体名:Point
struct Point (
f32, // 0番目のフィールド, 型:f32
f32, // 1番目のフィールド, 型:f32
);
fn main() {
// Point型のデータを変数pに束縛する
let p = Point ( 5.9, 1.1 );
// タプル構造体の各フィールドはタプルと同じく順番を指定する
println!("pの0番目のデータ:{}", p.0);
println!("pの1番目のデータ:{}", p.1);
}
波カッコ{}
ではなく丸カッコ()
で囲っていることと、定義の終わりにセミコロン;
があることに注意してください。
使い方はタプルとほぼ一緒です。定義済みのタプルといったところでしょうか。
さらに、データを持たない構造体を定義することも出来ます。
struct some_struct;
let x = some_struct;
当然ながら、単体では使い道がありません。
しかし、「構造体の定義は必要だけどデータはいらない」という状況が存在するようです。