intern
Rubyでは、:をつけるとシンボルが得られます。同じシンボルは同じオブジェクトです。
print :Rubyco, "\n" # => Rubyco if :Rubyco == :Rubyco print "1 Same\n" # => 1 Same end if :Rubyco.object_id == :Rubyco.object_id print "2 Same\n" # => 2 Same end
追記: 同じオブジェクトかどうかを比較するのに == は不適切でした。Object#equal?を使うべきでしょう。
print :Rubyco, "\n" # => Rubyco if :Rubyco.equal?(:Rubyco) print "1 Same\n" # => 1 Same end if :Rubyco.object_id == :Rubyco.object_id print "2 Same\n" # => 2 Same end
追記:id:nekokakさんから、ブックマークでobject_idの比較は==でよいの?と指摘がありました。ええと、ええと…ここでは:Rubycoと:Rubycoのobject_idが同じ値かどうかを見ているだけですから、(object_idのidentityではなくequalityを調べている)ので、==でよいのではないかと思います。
print :Rubyco, "\n" # => Rubyco if :Rubyco.equal?(:Rubyco) print "1 Same\n" # => 1 Same end if :Rubyco.object_id.equal?(:Rubyco.object_id) print "2 Same\n" # => 2 Same end
ちなみに、Rubyではすべてがオブジェクトなので、object_idもオブジェクトです。以下実験です。
p :Rubyco.object_id.class #=> Fixnum