加藤@ODNです.

In article <42319E11.907E8543@ht.sakura.ne.jp>, IIJIMA Hiromitsu wrote:
>いいじまです。
>
>#UTF-8 苦手です。
>
>> > return ((n<1||n>12)?name[0]:name[n]);
>
>> 書きますよ。
>> もしこれを単純にif文に直すとすれば
>> 
>> if(n<1||n>12) return name[0];
>> else return name[n];
>> 
>> となるわけですよね?
>
>はい。
>
>> 構造化プログラミングの原則は「出入口はひとつずつ」なので、
>> あまりに複雑さに差が出る場合以外は三項演算子を使います。
>
>うーん、私の感覚では、これは「両方あわせてひとつの出口」なんですが…。
>あと、エラーが発生して途中で流れが中断する場合は、複数の出口だろうが
>goto 文だろうが、それが分かりやすいと思ったときには使います。

この例は出口云々よりも,元々やりたい事が,プログラムのフローを変更するこ
とではなく,n の値がある範囲をはみ出た時にその値を 0 とみなす,というこ
とですから,素直に※3項演算子を使うのがよろしいのではないでしょうか.
※そもそも3項演算子はそのためのものだから.

もし,やりたい事がフローの変更,例えば err に跳ばす等,であれば,素直に 
if 文を使うのが分かり易いかと思います.#他に書き様もないけど.

<snip>
>と書き直しなさい、とありました。

これは同感.

>> 関数型言語を使ってみれば三項演算子の意義がわかってくるのではないでしょ
>> うか?
>
>一応 Emacs Lisp をガリガリ書いてはいますけど、完全に手続き型言語とみなし
>て使っているからなあ…

「関数型言語を使う」ではなく「関数型プログラミングをする」と書くべきだっ
たんですね (^_@).

Lisp1.5 で prog/return を使わなければ良い?
-- 
Hideki Kato <mailto:katoh@pop12.odn.ne.jp>

----== Posted via Newsfeeds.Com - Unlimited-Uncensored-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----