[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Metaprogramming and class_eval

Pedro Del Gallego

3/11/2007 10:24:00 PM

Hi

Whats the differents between this three classes. Why the
my_attr_accesor dosent create getters and setter clases.


Thanks in advance

#----------------------------------------------------------------------
#
#----------------------------------------------------------------------

class Class
def my_attr_accessor( *args )
args.each do |name|
self.class.class_eval do
attr_accessor :"#{name}"
end
end
end
end
=> nil

class MyNewClass
my_attr_accessor :id, :diagram, :telegram
end
=> [:id, :diagram, :telegram]

class MyClass
attr_accessor :id, :diagram, :telegram
end
=> nil

class Another_class
def initialize
["id","diagram","telegram"].each do |name|
self.class.class_eval do
attr_accessor :"#{name}"
end
end
end
end
=> nil

mnc = MyNewClass.new
=> #<MyNewClass:0xb7b97d0c>
mc = MyClass.new
=> #<MyClass:0xb7b950fc>
ac = Another_class.new
=> #<Another_class:0xb7b82358>

ac.diagram
=> nil
mc.diagram


--
-------------------------------------
Pedro Del Gallego

Email : pedro.delgallego@gmail.com

1 Answer

Trans

3/12/2007 3:28:00 AM

0



On Mar 11, 7:41 pm, "Mushfeq Khan" <mushfeq.k...@gmail.com> wrote:
> Hi,
>
> You seem to have an extra .class in your modification to Class. You can get
> away with this:
>
> class Class
> def my_attr_accessor( *args )
> self.class_eval do
> attr_accessor *args
> end
> end
> end


You are already where you need to be...

class Class
def my_attr_accessor( *args )
attr_accessor *args
end
end

T.