今から9年前に自分が書いたブログ記事で、「どんなプログラム言語でも覚える時にの共通習得仕様:15項目」というのがあったのを思い出しました。
参考 :
https://blog.myntinc.com/2015/06/15.html
新しくプログラミング言語を学習したいと考えた人は、是非参考にしてみてください。
ということで、今回はRust言語の反復文をコーディングしてみたいと思います。
for
プログラムの反復の基本であるfor文について、基本形を書いてみます。
for.rs : 10までの数値のインクリメント
fn main(){
for i in 0..10{
println!("{}",i);
}
}
これをコンパイルしてみると・・・
$ rustc for.rs
$ ./for
0
1
2
3
4
5
6
7
8
9
あれ?そうです、プログラミングの基本ですね。
for(i=0; i<10; i++){...}
これと同じ内容になるようです。
ちなみに、i<=10としたい場合は次のように書きます。
fn main(){
for i in 0..=10{
println!("{}",i);
}
}
見えている数値で扱ったほうが確認作業等が楽になるかもしれませんが、適宜使い分けるのがいいでしょう。
配列対応
javascriptでおなじみの配列に対しての記述も簡単にできます。
fn main(){
let arr = ["apple","banana","orange"];
for i in arr{
println!("{}", i);
}
}
コンパイル&実行
apple
banana
orange
さほど難しくないですね。
while
書き方によっては効率の良い反復記述のwhileも、書いておきたいと思います。
white.rs : 3の倍数と3の付く数字でアホになる処理
fn main(){
println!("3の倍数と3がつく数値でアホになる");
let mut num: i32 = 1;
while num <= 40{
let str = num.to_string();
if num % 3 == 0{
println!("{} アホ! (multiple)", num);
}
else if str.matches("3").count() > 0{
println!("{} アホ! (with 3)", num);
}
else{
println!("{}", num);
}
num += 1;
}
}
実行
$ rustc while.rs
$ ./while
3の倍数と3がつく数値でアホになる
1
2
3 アホ! (multiple)
4
5
6 アホ! (multiple)
7
8
9 アホ! (multiple)
10
11
12 アホ! (multiple)
13 アホ! (with 3)
14
15 アホ! (multiple)
16
17
18 アホ! (multiple)
19
20
21 アホ! (multiple)
22
23 アホ! (with 3)
24 アホ! (multiple)
25
26
27 アホ! (multiple)
28
29
30 アホ! (multiple)
31 アホ! (with 3)
32 アホ! (with 3)
33 アホ! (multiple)
34 アホ! (with 3)
35 アホ! (with 3)
36 アホ! (multiple)
37 アホ! (with 3)
38 アホ! (with 3)
39 アホ! (multiple)
40
う〜ん、マーヴェラス!!
数値と文字列の変換、文字を含む判定などがミソですな。
loop
Rustには、他の言語には無いloopという反復処理があります。
これはwhileと同じですが、whileよりも若干だけ高速になるようです。(リファレンスページ記述)
loop.rs : 3を英語表示して5の時にループから抜ける
fn main() {
let mut count = 0u32;
println!("Let's count until infinity!");
// Infinite loop
// 無限ループ
loop {
count += 1;
if count == 3 {
println!("three");
// Skip the rest of this iteration
// 残りの処理をスキップ
continue;
}
println!("{}", count);
if count == 5 {
println!("OK, that's enough");
// Exit this loop
// ループを抜ける。
break;
}
}
}
実行
$ rustc loop.rs
$ ./loop
Let's count until infinity!
1
2
three
4
5
OK, that's enough
解説
break;を必ずセットしないと無限ループ一直線です。
continue;も、他の言語と同じ様に使えます。
whileとの違いは、毎回の条件チェックが行われずに、loop内で独自に処理をしてbreakするという事で、continue;を使うほど処理が軽減されるという事ですね。
あとがき
今回は、反復文についての基本をなぞってみました。
中で、型だったり、配列などに関する、まだ踏み込んでいない内容もありましたが、今後の学習過程に入ったら深く追求していくので、今回は、反復の箇所だけ理解できたらOKでしょう。
※自分にあめ〜な〜。
参考ページ
https://doc.rust-jp.rs/rust-by-example-ja/flow_control/for.html
0 件のコメント:
コメントを投稿