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 なるほどそうなるのね