ちょっとしたことなんだけど
例えば1,2,3,4,5,6,6,6という数字がつまった配列があった時、それぞれ偶数なのか奇数なのかを判断してコンソールに出力する、といったプログラムを組む必要があるとする。その時の区切り文字は「, 」とする。
上記の配列の場合、次のように出力されるのが期待される結果だ。
奇数, 偶数, 奇数, 偶数, 奇数, 偶数, 偶数, 偶数
これをjavaで素直に実装すると、
int[] ary = {1,2,3,4,5,6,6,6}; for(int i=0; i<ary.length; i++) { System.out.print(i % 2 == 0 ? "偶数" : "奇数" + ", "); }
実行結果は以下のようになり、最後に「,」が付いてしまう。
奇数, 偶数, 奇数, 偶数, 奇数, 偶数, 偶数, 偶数,
そのため、このプログラムは次のように修正するのが正しい。
int[] ary = {1,2,3,4,5,6,6,6}; for(int i=0; i<ary.length; i++) { System.out.print(i % 2 == 0 ? "偶数" : "奇数"); if ( i-1 != ary.length ) System.out.print(", "); }
ちょっとしたことなんだけど、プログラマにとってはストレス。でもまぁ仕方ないよな。。
ところがどっこい、rubyだとエレガントにかけました、という話。
ary = [1,2,3,4,5,6,6,6] print ary.collect{ |x| x % 2 == 0 ? '偶数' : '奇数'}.join(', ')
痒いところに手が届くなぁ♪ちょっとしたことなんだけど。