Java5、awk、JavaScriptでイテレーション
# 「の」一文字を「は」に訂正しただけで最新一覧に出るのは勘弁してほしい...
Java5には拡張for文があります。 ぼくの書いたコードに拡張for文を見つけた某氏が「拡張for文を使っている」と驚いた反応を示しました。 声に出したのはそこまででしたが、瞳孔の動きは、「C世代の癖に生意気に拡張for文なんて使っているぞ」と言う態度を示していました。
そもそもC世代と言うより、ぼくはshell世代なので拡張for文に違和感はありません。 C++世代のおじさんには言われたくないセリフでした。
1年半前ですが、JavaScriptの配列のイテレーションに違和感を感じる記事を書いたことがあります。 http://dev.ariel-networks.com/blog/inoue.php?blogid=2&archive=2004-6-16
配列をforで回した時、要素ではなく添字が返るのに違和感を感じると書きました。 過去の自分の不明を恥じたいと思います。
この動作は(ファンを自認している)awkと同じです。しばらくone-linerしか書いていないので忘れていました。
awkで配列を回す処理は次のようになります。
BEGIN { foo_arr[0] = "elem0"; foo_arr[1] = "elem1"; foo_arr[2] = "elem2"; for (idx in foo_arr) { print "ARRAY..." idx "..." foo_arr[idx]; } }
この出力結果は次のようになります。
ARRAY...0...elem0 ARRAY...1...elem1 ARRAY...2...elem2
awkの配列は内部的には(Perlで言う)連想配列なので、数字である必要はありません。 なおかつ、数字で書いても文字列で書いても内部的には統合されるので、次のように書くと、添字0は添字"0"で上書きされます。
foo_arr[0] = "elem0"; foo_arr["0"] = "override-elem0";
プログラミングで馴染みの無い動作を見た時は、これは変わっている(のでダメだ)とか、直感に反するなどの性急な結論を出す前に、まず自分自身の無知さを疑ってみるべきです。そして、なぜこんな動作をするのかゆっくり考えるべきです。プログラミングにおける直感なんてものは、多くは怠惰な習慣です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/java5-to-awk/tbping