Il modulo ObjectSpace e’ un modulo built-in in ruby, e come tale e’ documentato nel pickaxe (potete leggerlo qui ) e tramite ri.
Questo modulo permette di accedere come e’ evidente, allo Spazio degli Oggetti. L’interprete ruby, infatti, in ogni momento deve sapere quali sono gli oggetti che esistono nel sistema. Ovviamente, visto che quest’informazione esiste, perché non renderla disponibile agli utenti?
L’unico metodo che analizziamo in questa pagina e’ ObjectSpace#each_object()
IRB:
>> ObjectSpace.each_object(Bignum) {|x| puts x } => 0Questo ci dice che non esistono oggetti di classe
Bignum.
Poiche’ IRB e’ gia’ un programma complesso, se provate ad usare una classe come String avrete un output enorme.
Facciamo una prova con una nostra classe:
>> class Mia >> def initialize(a) >> @a=a >> end >> end => nil >> a=Mia.new 10 => #<Mia:0x27d0228 @a=10> >> b=Mia.new 20 => #<Mia:0x27ccc58 @a=20> >> ObjectSpace.each_object(Mia) {|x| puts x } #<Mia:0x27ccc58> #<Mia:0x27d0228> => 2E’ ovvio che avremmo potuto manipolare questi oggetti in modo molto piu’ complesso, ma per ora basta vedere il funzionamento :)