Oluşturulacak olana kadar sınıfın adını bilmeden yeni bir sınıf oluşturmaya çalışıyorum.Dinamik bir sınıf oluşturma
Böyle bir şey; Mümkünse
variable = "ValidClassName"
class variable
end
Test = ValidClassName.new
, ben de dinamik olarak bu yeni sınıfa özelliklerini (ve yöntemler) ekleme hakkında som ipuçları takdir ediyorum.
derse 'ayarları' retreiving olacak ve onlar bu gibi bir şey olacaktır:
title :Person
attribute :name, String
attribute :age, Fixnum
Ama sadece o açık dosyayı kabul edecek şekilde tasarlanmış olmaması gerektiğini, nitelikleri sayı sonunda farklı olabilir yazın.
class Person
def initialize(name, age)
@name_out = name
@age_out = age
end
end
Yardım:
sonunda hangi gibi görünmelidir bir sınıf oluşturur?variable = "SomeClassName"
klass = Class.new(ParentClass)
# ...maybe evaluate some code in the context of the new, anonymous class
klass.class_eval { }
# ...or define some methods
klass.send(:title, :Person)
klass.send(:attribute, :name, String)
# Finally, name that class!
ParentClass.send(:const_set, variable, klass)
... yoksa sadece eval kullanabilirsiniz:
Sadece bir sınıf için kaynak kodu oluşturmak mı istiyorsunuz? ya da kaynağı üretmek ve çalışma zamanında sınıfı derlemek/yüklemek için Ruby'ye söylemek ister misiniz? – ardnew
Merak etme, hangi problemi çözüyorsun? Bu dinamik olarak oluşturulmuş sınıfları kullanmayı nasıl planlıyorsunuz? – ctcherry
Sınıfımın bir 'çerçeve' olarak hareket etmesi gerekiyor, bir kez de objetcs'i (sınıfın belirlediği talepleri karşıladıkları sürece) bir yaml dosyasından çıkarmak için kötü bir şekilde kullanıldı. YAML bir grup "insan" bulundurur ve bazılarının gereksinimleriyle eşleşen özniteliklere sahiptir. – BSG