繰り返しのfor文をC#とRubyで比べてみる

エンジニアの皆さん、こんにちは!
そうでない方も読んでいただきありがとうございます。

今回のテーマはfor

今回のテーマは、繰り返し構文のforです。
私は新人研修のときに習ったので、基本的な構文の1つでしょう。

なのに、Rubyで書いていたらなんかしっくりこなかったんですね。
特にこれ

for count in 1..0

1から始まって0で終わる。。。?
これが成り立つ理由がわかりませんでした。

そんなあるとき、C#で書いていたら気づきました。

この構文何の問題もない!

って。
なので、C#とRubyの構文を比べながら見ていきましょう。

インクリメントのfor

いわゆる単純なインクリメントするfor文をC#で書くとこうなります。

for(int count = 0; count <= 5; count++) 

0から始まって0、1、2、3、4、5と6回ループする構文ですね。

ではこれをRubyで書くとこうなります。

for count in 0..5

デクリメントのfor

では続いてデクリメントのforです(インクリメントって言い慣れているのに、デクリメントってどうもしっくり来ない。。笑)。
あまり使う場面は多くないかもしれませんが、別に0から始めなくていいし、インクリメントしかしてはいけないわけではありません。
それでは、どうぞ!

C#で書くとこうなります。

for(int count = 5; count >= 0; count--)

5から始まって、0以上の間だけ繰り返されるので、5、4、3、2、1、0と6回ループします。

では同じくRubyで書いてみましょう。

for count in 5..0

これも5から始まって0で終わります。

ここで気づいた!

みなさん、覚えていますでしょうか。最初にお見せしたしっくりこなかったあれを。

for count 1..0

そうです!これはデクリメントだったんです!

ちなみに、最後の0が含まれるか否かが気になると思いますが、
「1..0」は「count >= 0」と同じなので含みます。
「1...0」と書いたら「count > 0」と同じなので含みません。

最後に

まさか、C#やっていた経験がここで活きてくるとは思いませんでした笑
言語間の違いを並べてみると面白いですね。

下記サイトを参考にさせていただきました<m(__)m>
https://www.javadrive.jp/ruby/for/index3.html
https://www.javadrive.jp/ruby/for/index4.html