[#48659] == 演算子でちとはまりました — dezawa <dezawa@...>
6 messages
2012/03/22
[ruby-list:48664] Re: == 演算子でちとはまりました
From:
"KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
Date:
2012-03-23 20:47:38 UTC
List:
ruby-list #48664
きしもとです On Fri, 23 Mar 2012 20:44:15 +0900 "TOYODA Eizi" <toyoda@gfd-dennou.org> 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 の # 規格票にわざわざ書いてあったりします