概要
- 配列の中身をひとつずつ取り出すには iter() を使う。
- 取り出した結果を新しい配列にまとめるには cloned(), collect() を使う。
- 取り出したい中身を限定するには filter() を使う。
- 取り出した中身に変更を加えるには map() を使う。
プログラム例
- 配列を入力にして、全く同じ配列を出力する。つまりコピー。
- iter().cloned(), collect::<Vec<_>>() を使う。
fn main() {
let 配列 = vec![1, 2, 3, 4];
let 配列2 = 配列.iter().cloned()
.collect::<Vec<_>>();
println!("{:?}", 配列2);
}
プログラム例2
- 配列を入力にして、0 を取り除いた配列を出力する。
- filter(|&入力変数| bool値) を使う。
fn main() {
let 配列 = vec![1, 0, 2, 0, 3, 0, 0, 4];
let 配列2 = 配列.iter().cloned()
.filter(|&i| i != 0)
.collect::<Vec<_>>();
println!("{:?}", 配列2);
}
プログラム例3
- 配列を入力にして、100未満のものは0にした配列を出力する。
- map(|入力変数| 出力する値) を使う。
fn main() {
let 配列 = vec![1, 2, 300, 100, 200, 3];
let 配列2 = 配列.iter().cloned()
.map(|i| {
if i < 100 {0}
else {i}
})
.collect::<Vec<_>>();
println!("{:?}", 配列2);
}
プログラム例4
- 1から10の範囲を入力にして、3の倍数をゼロにした配列を出力する。
fn main() {
let 配列 = (1..=10)
.map(|i| {
if i % 3 == 0 {0}
else {i}
})
.collect::<Vec<_>>();
println!("{:?}", 配列);
}