Ruby覚書

・値の比較は、"==" を使う

・オブジェクトの比較には、 equal? を使う

 

p "abc" == "abc"         #=> true

p "abc".equal?("abc")    #=> false  まぁオブジェクトとしては違うからね

では、変数に入れてみよう

qwe = "QQQQQ"

xyz = "QQQQQ"

 

p qwe == xyz            #=> true    まぁそらそう

p qwe.equal?(xyz)       #=> false   なるほど、違うオブジェクトだはな

では、qwe = xyz と入れてみると

qwe = xyz

p qwe == xyz           #=> true  まぁ、変わるわけないはな

p qwe.equal?(xyz)      #=> true  そら、qweにxyzを入れているから、同じオブジェクトやわな

 

じゃあクラスを作って確認して見よう

class HogeTest

    def initialize(args)

        @hogehoge = args

    end

    def getHoge

        return @hogehoge

    end

end

 

qaz = HogeTest.new("AAAAAA")

wsx = HogeTest.new("AAAAAA")

 

p qaz.getHoge      #=> "AAAAAA"

p wsx.getHoge      #=> "AAAAAA"

 

p qaz == wsx        #=> false  まぁ、そうだね

p qaz.equal?(wsx)   #=> false  違うオブジェクトだねぇ

これなら

p qaz.getHoge == wsx.getHoge         #=> true  戻り値の比較になるからね

p qaz.getHoge.equal?(wsx.getHoge)    #=> false なるほどそうなるのね