Dynamisk instansiering av objekter i Ruby
I Ruby, som i mange andre språk er det mulig å instansiere et objekt uten å vite på forhånd hvilken klasse det skal instansieres fra. Faktisk er det lekende lett å gjøre det.
Alle klasser som er definert er tilgjengelig som konstanter i
Object-klassen. Alle klasser i Ruby har metoden
const_get(sym) som tar et symbol eller en streng og returnerer verdien av konstanten ved det gitte navnet.
Dermed kan man dynamisk instansiere en klasse så lett som:
dyn_obj = Object.const_get('KlasseNavn').new
Dette er eksempelvis nyttig i tilfeller der du skal instansiere et objekt av en subklasse av en kjent klasse, men hvor den gitte subklassen er ukjent. Subklassens navn kan finnes som en streng eller et symbol, og dermed har du alt du trenger.