私はenv::vars_os
への呼び出しを持っており、機能的な方法でそれらのすべてを印刷したいと思います:クロージャで複数の引数を取って印刷するにはどうすればよいですか?
env::vars_os()
.map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));
これは何も出力しませんが、記事Destructuring and Pattern Matchingはこれが可能でなければなりません示しています。
私はenv::vars_os
への呼び出しを持っており、機能的な方法でそれらのすべてを印刷したいと思います:クロージャで複数の引数を取って印刷するにはどうすればよいですか?
env::vars_os()
.map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));
これは何も出力しませんが、記事Destructuring and Pattern Matchingはこれが可能でなければなりません示しています。
documentation for vars_os()
を見ると、タプルの反復子であり、構文は(a, b)
です。したがって、コードを
env::vars_os()
.map(|(k, v)| println!("k : {:?}, v : {:?} \n", k, v));
に変更する必要があります。
使用している構文は構造体に分解されますが、構造体の名前は中括弧の前にありません。 Rustの
イテレータはレイジー反復子が消費されるまでmap
のコードのいずれも実行されないことを意味する、評価されます。これを行うにはcollect()
を呼び出します。しかし、それを行うための慣用的な方法ではなくmap
のfor
ループ内(印刷など)の副作用を持っているコードを配置するために、次のようになります。
for (k, v) in env::vars_os() {
println!("k : {:?}, v : {:?} \n", k, v);
}
「警告:使用する必要があり、未使用の結果:イテレータアダプタ怠け者で、消費しない限り何もしません。 " – ljedrz