Ich habe eine initialize
Methode, die einen Hash akzeptiert, um einige Instanzvariablen zu setzen. Dies ist im Grunde, was ich zu tun versuche:
class Ad
DEFAULT_PAGE = 'index'.freeze
DEFAULT_CHANNEL = 'general'.freeze
DEFAULT_AREA = 'general'.freeze
attr_accessor :page, :area, :channel
def initialize args={}
@page = args[:page] || DEFAULT_PAGE
@area = args[:area] || DEFAULT_AREA
@channel = args[:channel] || DEFAULT_CHANNEL
end
# ...
end
Ich habe einen Tipp gesehen, wie man Instanzvariablen dynamisch setzen kann, aber ich bin mir nicht sicher, wie man auch die Standardwerte einbezieht...
def initialize args={}
args.each do |attr,val|
instance_variable_set("@#{attr}", val) unless val.nil?
end
end
Kann ich mich dynamisch auf eine Konstante beziehen? Oder gibt es bessere Möglichkeiten, diese Art von Dingen zu tun, sind willkommen!
... Mir ist auch klar, dass attr_accessor
Variablen können individuell eingestellt werden. Aber ich möchte es einfach so machen :)