Personal tools
You are here: Home ブログ 井上 Java5、awk、JavaScriptでイテレーション
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

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";

プログラミングで馴染みの無い動作を見た時は、これは変わっている(のでダメだ)とか、直感に反するなどの性急な結論を出す前に、まず自分自身の無知さを疑ってみるべきです。そして、なぜこんな動作をするのかゆっくり考えるべきです。プログラミングにおける直感なんてものは、多くは怠惰な習慣です。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/java5-to-awk/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.