Ruby と Rust の範囲の書き方の違い
Ruby 使いが Rust を勉強しはじめて初日に驚くことの一つに,
1..10 は〈1 から 10 まで〉ではなく〈1 から 9 まで〉を意味する,
ということがある。
Ruby と Rust の範囲の書き方の対照は以下のごとし。
RubyRust
1..10
1..=10
1...10
1..10
やっちまった
Rust の .. の仕様はとうの昔に分かっていたはずなのに,先日,1 から size まで繰り返そうとして,Ruby の癖で,うっかり
for i in 1..size {
}
と書いてしまった。
結果の違いがささいなことだったので,しばらくバグに気付かなかった。
恨みと和解(?)
Rust を勉強した初日,.. に関して
ったく,他言語のこともちゃんと調べて仕様を決めてほしいよな
と思った。
ところがこれは勘違いで,Rust の範囲の書き方については突っ込んだ議論が行われ,その際に当然(?)Ruby のケースについても俎上に上がっていた。
「Ruby のほうがおかしいんじゃ」というような話も確か出てたような(だいぶ前に読んだのでよく覚えてない)。
結論の当否は私には分からないけれど,きちんとした議論の末に決まった仕様であるらしいことは分かった。
で,ごめん,その議論のページ(たしか Rust の issues だったと思う)の URL を載せようと思ったんだけど,見つけられなかった。
誰か教えて〜 (ついでに議論の要点を解説してくれると嬉しいにゃ〜)
あと,なんか昔,Rust に … って無かったっけ? 今試したら unexpected token って怒られたんだけど。