Используя Ruby, я хочу динамически создавать переменные экземпляра класса на уровне соответствующих геттеров. Для двух из них я использую attr_reader. Но для тех, которые должны быть инициализированы в пустой массив, я следующее:Определить memoized геттер динамически в ruby
class MatchMake
class << self
attr_reader :local_data, :remote_data
["type1", "type2"].each do |elem|
define_method "#{elem}_matches".to_sym do
instance_variable_set("@#{elem}_matches", [])
end
end
end
...
end
от моего понимания этот код эквивалентен:
class MatchMake
class << self
def local_data
@local_data
end
def remote_data
@remote_data
end
def type1_matches
@type1_matches = []
end
def type2_matches
@type2_matches = []
end
end
...
end
Во-первых, я хотел бы знать, если я правильно в моем понимании. Во-вторых, я хотел бы знать, если есть способ memoize переменные, как в следующем примере:
def type1_matches
@type1_matches ||= []
end
Моя ошибка, моя с ode должен прочитать def type1_matches, отредактируйте вопрос, чтобы отразить выше. –