uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

===(あるいはis演算子)はどこに行ったの

どこに行ったのシリーズ。
Groovyでの==は、Javaの==の意味ではなく、Javaでのequals呼び出しと等価です。

では、Javaの==(オブジェクトの同一性判定)の用途のためにはGroovyでどう書けば良いか?

結論から言うと、ここにも書かれているように、その用に供するのはObject#is(Object obj)です。

こことか
ここにある

Invoke using the 'is' operator, like so: def same = (this is that)

と言った記述に惑わされてはならぬわけです。

「===」を取っ払った理由は、ここによれば、=と==を間違う人が多いというのは古来からの問題であり、===を導入してしまうと、==と===を間違う人も出てくるだろうから、ということみたい。演算子にしなかった理由はJavaとの互換性からかも。