class Boy
attr_accessor :name, :age
def initialize(n, a)
@name = n
@age = a
end
def [](key)
instance_variable_get(key)
end
end
b = Boy.new("Tom", 23)
b.name # Tom
b[:@name] # Tom
Или
class Boy
attr_accessor :name, :age
def initialize(n, a)
@name = n
@age = a
end
def [](key)
public_send(key)
end
end
b = Boy.new("Tom", 23)
b.name # Tom
b[:name] # Tom
А если вы хотите определить [] = метод,
Для первого стиля:
def []=(key, value)
instance_variable_set(key, value)
end
Для второгостиль:
def []=(key, value)
public_send(key.to_s + '=', value)
end