Re: 三項演算子(Re:こんなコード書く?)
In article <4232f725.7082%katoh@pop12.odn.ne.jp>
Hideki Kato <katoh@pop12.odn.ne.jp> writes:
>>> && や || は,一方の値に依っては,残りを計算しなくても全体の値が決まると
>>> いう,その演算の(ある意味特殊な)性質を利用しているので,?: 演算子とは
>>> 若干性質が異なるように思えます.例えば,& や | の仲間の ^ (exclusive or)
>>> にはこれは適用できません.
>>
>>&& と &、|| と | は全く異なる演算子なんで、^ を持ち出しても無意味です。
>
> 「全く」異なる,のでしょうか? それなら何故同じ文字を用いたのでしょう.
> + と ++ の関係と同様に,類似性があるから同じ文字を用いたと考える方が自然
> だと思います.
すいません。まさにその点が見解の相違点なので、「全く異なる」と書いたのは
自分の土俵で話をしたわけで、まずかったと思います。
<< 今は && || の話なんで、ビット単位の演算子である & | ^ を持ち出すのは
と書くべきだったか。
&& || の & や | との類似点を重視するのか、式の中に制御構造を持ち込んだことを
重視するのかによって見解が分かれるわけです。
<lispの話>
>>and,or は全引数を評価してからand/or演算をする仕様であっても動作するように
>>書くべきという考えでしょうか。condだけ対象外な理由がわかりません。
>
> 読み難い,バグり易い,cond で十分,が理由です.
単なる慣れの問題のように思えます。
もし私が加藤さんと共同でコーディングすることになれば、私がand/orを制御構造的に
使えばそれは加藤さんに直感的に通じないのでバグの元になるでしょうけど。
みんなのand/orに対する思いが統一されていれば大丈夫ですよね。
ああ、そういう意味ではオープンソースなんかでは不特定多数なんで問題の元になるかも。
でもやっぱりそういう意味でも慣れの問題でしょう。皆が慣れればOK。
まあ、lispでは制御構造目的でand/orを積極的に使うべきとまでは思いませんけど。
and/orを使ったほうが見やすければためらう必要は無いと思います。
</lispの話>
>># Cでも 0||3 が1でなく3になればすっきりすると思いますが。
>
> ふむむ,それも面白いかも.
Cでは 0||3 が1になってしまうんで「制御構造派」は「& | 類似重視派」に比べて
分が悪いと思っています。
--
tksotn
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735