MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Rustの基礎 - タプルのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Rustの基礎 - タプル
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == タプルとは、複数の異なる型の値を1つの複合型にまとめて管理することができる。<br> タプルの各要素は異なる型を持つことができるのが特徴である。<br> <br> Rustのタプルは固定長であり、1度宣言されるとサイズを変更することができない。<br> <br><br> == タプルの定義 == タプルを作成するには丸括弧()を使用する。<br> この中に、カンマで要素を区切る。<br> <br> let タプル名 = (要素1, 要素2, 要素3, ...) という形になる。<br> <br> また、空のタプルを作成するには、丸括弧()のみで宣言する。<br> <syntaxhighlight lang="rust"> fn main() { let t1 = (1, 3, 5, 3, 7, 5); let t2 = (2, 7, 8, 3, 9, 1); let t3 = (); println!("{:?}", t1); println!("{:?}", t2); println!("{:?}", t3); } // 出力 (1, 3, 5, 3, 7, 5) (2, 7, 8, 3, 9, 1) () </syntaxhighlight> <br> タプルの要素にアクセスするには、ドット記法とインデックスを使用する。<br> インデックスは0から始まる。<br> <syntaxhighlight lang="rust"> fn main() { let t = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100); println!("{}", t.2); // スライスは直接サポートされていないため、必要な要素を個別に取得する let slice = (t.3, t.4, t.5, t.6, t.7); println!("{:?}", slice); } // 出力 30 (40, 50, 60, 70, 80) </syntaxhighlight> <br> 要素が1つだけのタプルを作成する場合も、通常通り丸括弧を使用する。<br> <syntaxhighlight lang="rust"> fn main() { let x = (200,); let y = (300,); println!("{:?}", x); println!("{:?}", y); } // 出力 (200,) (300,) </syntaxhighlight> <br> <u>※注意</u><br> <u>Rustのタプルは最大12要素まで標準的なトレイトが実装されている。</u><br> <br> <u>異なる型の要素を混在させることができる。</u><br> <syntaxhighlight lang="rust"> // 例 let t = (1, "hello", 3.14); </syntaxhighlight> <br> <u>要素へのアクセスはインデックス演算子 [] ではなく、ドット記法 <code>tuple.0</code> を使用する。</u><br> <br> <u>また、スライス操作は直接サポートされていない。</u><br> <br><br> == タプルの操作 == <u>※注意</u><br> <u>Rustのタプルには、Pythonの`index()`や`count()`のようなメソッドは存在しない。</u><br> <u>タプル同士の結合演算子 + は存在しないため、結合したい場合は新しいタプルを作成する必要がある。</u><br> <br> ==== タプルの分解 ==== タプルの要素を個別の変数に分解することができる。<br> <br> 以下の例では、タプルの各要素を変数に代入している。<br> <syntaxhighlight lang="rust"> fn main() { let t = (1, 2, 4, 6, 8); let (a, b, c, d, e) = t; println!("a = {}, b = {}, c = {}, d = {}, e = {}", a, b, c, d, e); } // 出力 a = 1, b = 2, c = 4, d = 6, e = 8 </syntaxhighlight> <br> 必要な要素のみを取得し、残りを無視する場合は <code>_</code> (アンダースコア) を使用する。<br> <syntaxhighlight lang="rust"> fn main() { let t = (1, 2, 4, 6, 8); let (first, _, third, _, _) = t; println!("first = {}, third = {}", first, third); } // 出力 first = 1, third = 4 </syntaxhighlight> <br> ==== タプルと可変性 ==== Rustのタプル自体はイミュータブル(不変)だが、<code>mut</code> キーワードを使用することにより、要素を変更可能にできる。<br> <br> 以下の例では、可変タプルの要素を変更している。<br> <syntaxhighlight lang="rust"> fn main() { let mut t = (1, 2, 3); println!("{:?}", t); t.0 = 100; t.1 = 200; println!("{:?}", t); } // 出力 (1, 2, 3) (100, 200, 3) </syntaxhighlight> <br> ==== 異なる型を持つタプル ==== Rustのタプルは異なる型の要素を格納できる。<br> <br> 以下の例では、整数、文字列、浮動小数点数を1つのタプルに格納している。<br> <syntaxhighlight lang="rust"> fn main() { let t = (42, "hello", 3.14, true); println!("{:?}", t); println!("整数: {}, 文字列: {}, 浮動小数点数: {}, 真偽値: {}", t.0, t.1, t.2, t.3); } // 出力 (42, "hello", 3.14, true) 整数: 42, 文字列: hello, 浮動小数点数: 3.14, 真偽値: true </syntaxhighlight> <br><br> == タプルの活用 == ==== 関数の複数の戻り値 ==== タプルを使用すれば、関数から複数の値を返すことができる。<br> <br> 以下の例では、関数が3つの値をタプルとして返している。<br> <syntaxhighlight lang="rust"> fn get_values() -> (i32, i32, i32) { (10, 20, 30) } fn main() { let (x, y, z) = get_values(); println!("x = {}, y = {}, z = {}", x, y, z); } // 出力 x = 10, y = 20, z = 30 </syntaxhighlight> <br> ==== タプルの比較 ==== タプルは要素が同じ型であれば比較演算を行うことができる。<br> 比較は左から順に行われ、最初に異なる要素で結果が決まる。<br> <syntaxhighlight lang="rust"> fn main() { let t1 = (1, 2, 3); let t2 = (1, 2, 4); let t3 = (1, 2, 3); println!("t1 == t2: {}", t1 == t2); println!("t1 == t3: {}", t1 == t3); println!("t1 < t2: {}", t1 < t2); } // 出力 t1 == t2: false t1 == t3: true t1 < t2: true </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Rust]]
Rustの基礎 - タプル
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse