[#45318] Windows コマンドプロンプトで UTF-8を出力するには — Yuumi Yoshida <yuumi3@...>

おつかれさまです、 Yuumi3です。

11 messages 2008/08/08

[ruby-list:45440] Re: assert_equalの挙動について

From: Akira Hayakawa <ruby@...>
Date: 2008-08-30 08:09:43 UTC
List: ruby-list #45440
ありがとうございます。
納得しました。==は鬼門なんですね。

ちなみに、このメーリスでは余談になるのでしょうが、
どうやらJavaでも同じような境遇らしいです。
http://www.applitips.com/java/kiso/equals.htm
http://java-house.jp/ml/archive/j-h-b/025025.html

equalが、「2つのオブジェクトのすべての属性がすべてequalなら正しい」という感じの仕様なら使い勝手が良いのですが、
こういう再帰は実装するのは不可能なんでしょうか?

On Sat, 30 Aug 2008 17:00:02 +0900
KURODA Hiraku <hiraku@sapporo.email.ne.jp> wrote:

> こんにちは、黒田ひらくと言います。
> 
> Akira Hayakawa さんは書きました:
> > こんばんわ。Akiraです。
> > 
> > Rubyではequal?がオブジェクトidの同一性を調べるもので、==がオブジェクトの値の一致を調べるものだとたのしいRubyのp.66に書いてあります。
> > また、assert_equalは==ならパスする関数で、assert_sameはequal?ならパスする関数だと以下のリファレンスに書いてあります。
> > (中略)
> > @nameは同じなのに、値が違うと言われます。
> > 実はこれはJavaでもなんでこうなるか分からなくて放置していたところで、
> > 放置しておいても良い事ないので、どなたか教えていただけませんか?
> > idの一致はわかりやすいのですが、Rubyにおける==というのは何を持って真で
> あるとみなすオペレータなのでしょうか?
> 
> Objectクラスの == が equal? と同じ動作をするように定義されていて、Akira
> さんのNameクラスがこの==を継承しているからです。
> 
> class Name
>   def ==(other)
>     @name==other.name
>   end
> end
> とかしたら、期待通りのテスト結果になると思います。
> 
> Stringクラスなどは独自に==を定義し直しているので、"a"==("a".dup)がtrueに
> なったりします。
> -- 
> --------------------------------------------------
>  黒田 拓(くろだ ひらく)
>     hiraku@sapporo.email.ne.jp
>     http://www.hinet.mydns.jp/
> --------------------------------------------------
> 
> 


-- 
Akira Hayakawa <ruby@i-mail.jp>

In This Thread