Rust-iterator-and-closure
Rust-イテレーターとクロージャー
この章では、イテレータとクロージャがRUSTでどのように機能するかを学習します。
イテレータ
イテレータは、配列、ベクトル、マップなどの値のコレクションを反復処理するのに役立ちます。 イテレータは、Rust標準ライブラリで定義されているイテレータ特性を実装します。 _iter()_メソッドは、コレクションの反復子オブジェクトを返します。 イテレータオブジェクトの値はアイテムと呼ばれます。 イテレータの_next()_メソッドを使用して、アイテムを走査できます。 _next()_メソッドは、コレクションの最後に到達すると値Noneを返します。
次の例では、イテレータを使用して配列から値を読み取ります。
出力
配列やベクターなどのコレクションがIterator traitを実装する場合、以下に示すようにfor … in構文を使用してトラバースできます。
出力
次の3つのメソッドは、コレクションから反復子オブジェクトを返します。Tはコレクション内の要素を表します。
Sr.No | Methods & Description |
---|---|
1 |
iter() &T(Tへの参照)の反復子を提供します |
2 |
into_iter() Tの反復子を与える |
3 |
iter_mut() &mut Tの反復子を与える |
イラスト:iter()
iter()関数は、借用の概念を使用します。 コレクションの各要素への参照を返します。コレクションはそのままで、ループ後に再利用できます。
出力
イラスト-into_iter()
この関数は所有権の概念を使用します。 コレクション内の値をiterオブジェクトに移動します。つまり、コレクションが消費され、再利用できなくなります。
出力
イラスト-forおよびiter_mut()
この関数は、_iter()_関数に似ています。 ただし、この関数はコレクション内の要素を変更できます。
出力
閉鎖
クロージャとは、別の関数内の関数を指します。 これらは匿名関数です。名前のない関数です。 クロージャを使用して、関数を変数に割り当てることができます。 これにより、プログラムは関数をパラメーターとして他の関数に渡すことができます。 クロージャーはインライン関数としても知られています。 外部関数の変数には、インライン関数からアクセスできます。
構文:クロージャーの定義
クロージャー定義には、オプションでパラメーターを含めることができます。 パラメーターは2本の縦線で囲まれています。
クロージャを呼び出す構文は、 Fn 特性を実装します。 したがって、*()*構文で呼び出すことができます。
図
次の例は、関数_main()_内にクロージャー_is_even_を定義しています。 クロージャーは、数値が偶数の場合はtrueを返し、数値が奇数の場合はfalseを返します。
出力
図
_main()_関数は、変数_val_とクロージャーを宣言します。 クロージャーは、外部関数_main()_で宣言された変数にアクセスします。