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.
Kommentarer
Marius Mathiesen
(http://shortcut.no/)
15. februar, 13:02
Om man bruker Rails har man en praktisk metode på String-objekter som heter constantize:
eller om man har noe som burde kunne gjøres til en klasse i Rails-speak:
Ganske fett for eksempel når man skal gjøre polymorfe assosiasjoner i en controller (user has_many :images, :as => :pictureable) og poster et bilde til /user/1/images (som er en controller som håndterer bilder fra mange slags pictureables (som altså er objekter som har bilder) - for eksempel.
Christian
15. februar, 22:37
Miu Miu Pas Cher
(http://www.miumiupascher.com)
12. mars, 02:45
la rivière Cher et la Loire, à environ 65 miles de Miles-Orléans et 125 au sud-ouest de Paris.<a href="http://www.miumiupascher.com/6-miu-miu-2011"title="Miu Miu 2011">Miu Miu 2011</a>
Cette ville est la capitale des Français département de l'Indre et Loire.
beats by dre
(http://www.monsterbeatsbydresg.com)
1. april, 08:45
comfort. Plush ear cushions covered with ultra-soft breathable materials keep <a href="http://www.monsterbeatsbydresg.com" title="beats studio">beats studio</a>
you cool even when the music's hot.Ready for iPhoneBeats comes with a Monster iSoniTalk headphone <a href="http://www.monsterbeatsbydresg.com" title="dre headphones">dre headphones</a>
cable with built-in answer button and microphone so you can easily answer calls while <a href="http://www.monsterbeatsbydresg.com" title="monster beats">monster beats</a>
listening to music.Designed for Apple Sound CheckThe Sound Check feature in iTunes balances playback levels so all your music tracks play at a consistent volume.