2016-03-19 19 views
0

sınıfına dönüştürün Aramak istediğim bir sınıfın dize olarak temsilini gösteriyorum. Sınıf zaten var.Dize (Örn. "Araba") alın ve Ruby'de

klass = "Broseph" 
Class.new(Broseph) 
# => #<Class:0x007f9f0c1cc8b8> 
Class.new("Broseph") 
# => TypeError: superclass must be a Class (String given) 

Dizeyi bir sınıfa nasıl dönüştürebilirim? Dize olarak temsil ettiğim bir sınıfta sınıf yöntemini nasıl çağırabilirim? Ayrıca, bu sınıf yöntemine argümanları geçmem gerekecek.

cevap

2

Sen const_get kullanabilirsiniz:

klazz.some_method # when you know the method is fixed 
klazz.send('some_method') # when the method also is stored in a string 
:

klazz = Object.const_get('Broseph') 

Sonra gibi klazz üzerinde yöntemleri çağırmak