[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 の
# 規格票にわざわざ書いてあったりします

In This Thread

Prev Next