On Sun, 5 May 2002 23:43:59 +0900
kikwai@... (機械伯爵) さんwrote:
> ※紅玉はルビーだけど、日本語で書くと林檎(Apple)みたいな・・・(爆)
確かにそうですね(^^)りんごの銘柄にありそうな(^^;)
> > 自然言語的と言ったのはどの言語だって、アナロジーで推測してこう書けるか
> > なと思って書くことは多いわけだけど、いろいろな書き方が許されるのがPerlの
> > 特徴。連想配列でキーだけを取り出すことはほとんどないので、このような書き
> > 方は普通試さないと思うのですけど、書いてみると動くので、ほーっと思っただ
> > けなんです。
>
> awkは連想配列っきゃないので、リストの代わりに時々インデックスを使います
> から、AWKユーザへの配慮かもしれませんね・・・
>
> ※Perlはそこらへん律儀だから・・・
自然言語的というのはLarry Wall自身が言っていて、具体的にどのようなこと
かというとそういうことなんだけど(^^;)
少し敷衍すると、
@tbl_list = sort keys %tbl;
と、
foreach $item (sort keys %tbl){
push(@tbl_list, $item);
}
は、同じことを結果としてやるわけですけど、
sort keys %tbl
はまったく同じ表現ですけど、違うように機能しています。配列として連想配列
から一度に配列に取り出すか、変数として一つずつ取り出すかですね。
これを配列コンテキストかスカラーコンテキストで評価する場合の違いという
ように言うわけです。コンテキスト(context)は日本語でいうと文脈です。言葉
の使い方(文脈)で意味が変わってくる、すなわち動作が変わってくるというのが、
Perlなんです。私はおそらくこのことを自然言語的と言っているのだと思ってい
ます。通常、(sort keys %tbl)はスカラーコンテキストで評価する場面が多いの
で(常套句だから)、配列コンテキストで評価した場合に動くとおーっと思うわけ
です。
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/