class Squares
class << self
def []=(k, v)
puts "Squares[#{k.inspect}] = #{v.inspect}"
end
def [](k)
puts "Squares[#{k.inspect}]"
k
end
end
end
Attribute = Struct.new(:result) do
def value=(v)
puts "Attribute{#{result.inspect}}#value = #{v.inspect}"
end
def value
puts "Attribute{#{result.inspect}}#value"
result
end
end
# Array accessor
Squares[true] ||= nil
Squares[false] ||= nil
# Getter+setter methods
Attribute.new(true).value ||= nil
Attribute.new(false).value ||= nil
Y2xhc3MgU3F1YXJlcwogIGNsYXNzIDw8IHNlbGYKICAgIGRlZiBbXT0oaywgdikKICAgICAgcHV0cyAiU3F1YXJlc1sje2suaW5zcGVjdH1dID0gI3t2Lmluc3BlY3R9IgogICAgZW5kCiAgICAKICAgIGRlZiBbXShrKQogICAgICBwdXRzICJTcXVhcmVzWyN7ay5pbnNwZWN0fV0iCiAgICAgIGsKICAgIGVuZAogIGVuZAplbmQKCkF0dHJpYnV0ZSA9IFN0cnVjdC5uZXcoOnJlc3VsdCkgZG8KICBkZWYgdmFsdWU9KHYpCiAgICBwdXRzICJBdHRyaWJ1dGV7I3tyZXN1bHQuaW5zcGVjdH19I3ZhbHVlID0gI3t2Lmluc3BlY3R9IgogIGVuZAoKICBkZWYgdmFsdWUKICAgIHB1dHMgIkF0dHJpYnV0ZXsje3Jlc3VsdC5pbnNwZWN0fX0jdmFsdWUiCiAgICByZXN1bHQKICBlbmQKZW5kCgojIEFycmF5IGFjY2Vzc29yClNxdWFyZXNbdHJ1ZV0gfHw9IG5pbApTcXVhcmVzW2ZhbHNlXSB8fD0gbmlsCgojIEdldHRlcitzZXR0ZXIgbWV0aG9kcwpBdHRyaWJ1dGUubmV3KHRydWUpLnZhbHVlICB8fD0gbmlsCkF0dHJpYnV0ZS5uZXcoZmFsc2UpLnZhbHVlIHx8PSBuaWwK