Sono venuto a ruby da PHP. Come potrei fare la prossima cosa in ruby?Riflessione in rubino. Creare un'istanza di un oggetto con il nome della classe data
$className = 'ArrayObject';
$arrayObject = new $className();
Sono venuto a ruby da PHP. Come potrei fare la prossima cosa in ruby?Riflessione in rubino. Creare un'istanza di un oggetto con il nome della classe data
$className = 'ArrayObject';
$arrayObject = new $className();
Si può fare questo:
arrayObject = Object::const_get('Array').new
È inoltre possibile utilizzare il seguente se si utilizza Ruby on Rails:
array_object = "Array".constantize.new
Sembra una soluzione da RoR. Grazie! – vooD
Vale la pena sottolineare che 'constantize' è un'estensione core aggiunta a Ruby dal modulo ActiveSupport di Rails, vale a dire che non è puro Ruby. –
Buon punto John, ho aggiornato la mia risposta. –
Se si dispone di una classe, come ad esempio String :
a = String
a.new("Geo")
fornirebbe una stringa. La stessa cosa vale per altre classi (il tipo di parametri & differirà ovviamente).
Sebbene questo non risponda direttamente alla domanda, è un buon punto dal momento che le classi sono oggetti, è possibile memorizzarle come qualsiasi altro oggetto e questo potrebbe essere un approccio migliore in molti casi in cui si sarebbe tentati di usare una stringa in un'altra lingua – Chuck
Fantastico! Molte grazie! – vooD