2012年3月24日

[ruby-list:48664] Re: == 演算子でちとはまりました

きしもとです

On Fri, 23 Mar 2012 20:44:15 +0900
"TOYODA Eizi" <toyoda@xxxxx> wrote:
> せっかく true, false, nil の3つの著名なリテラルがあるので三値論理、お話としては大変綺麗ですが、よく考えてみると、SQL の NULL == NULL が NULL を得るように nil == nil が nil
> を返すようにせよということですよね。理論上美しいのはわかるのですが、これはハマる人が多そう…

そもそもというかもともとというか == 演算子の世界というのはそんなに

美しくなくて、たとえば、反射的でない( x == x が満たされない)例が
あります。

irb(main):001:0> foo = 0.0/0.0
=> NaN
irb(main):002:0> foo == foo
=> false

(「数じゃない」という値なのですから合っているという気もするし、
なんだそりゃ、という気もする例ですが、IEEE 754 的には要求されている
ふるまいです)

Ruby においては、「 "==" という演算子があって、そのふるまいが規定
されている」のではなく「演算子式はメソッド呼び出しのシンタクティック
シュガーでしかなく、各オブジェクトはそれっぽいふるまいをするように
期待されている」だけだというのが結論になるのかもしれません。

# JavaScript の == には推移的でない例もある、というのは ECMAScript の
# 規格票にわざわざ書いてあったりします


投稿者 xml-rpc : 2012年3月24日 05:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/109448
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。