2
class MySymbol
TABLE={}
def initialize(str) @str = str end
def to_s() @str end
def ==(other)
self.object_id == other.object_id
end
end
class String
def my_intern
table = MySymbol::TABLE
unless table.has_key?(self)
table[self] = MySymbol.new(self)
end
table[self]
end
end
"foo".my_intern
上記の例は私がブログで見つけたものですが、私はTABLEがハッシュであり、MySymbolクラスのメンバーであることを理解しています。私が理解していないのは、Stringクラスの内部から公開されていることです。私は、クラスのインスタンス変数がデフォルトでプライベートであると思って、あなたはクラスの外からそれらにアクセスするためにget/setメソッドを使用する必要がありますか?あなたの例では私の例ではこれが一般にアクセス可能なのはなぜですか? "MySymbol :: TABLE"