Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Adding a new method to a class

Reply
Thread Tools

Adding a new method to a class

 
 
Mickael Faivre-Macon
Guest
Posts: n/a
 
      09-24-2006
Hi,

What is called the process of adding a new method of an already defined class ?

For example:

class A
def a
end
end

And in another file:

class A
def b
end
end

And now my real question:

What if I want to declare a new class variable in the initialize method ?
If it's a derived class I can call super:
def initialize
super
@my_var = ""
end

but if it not derived ?
How can I do this ?

Thanks,
Mickael

 
Reply With Quote
 
 
 
 
MonkeeSage
Guest
Posts: n/a
 
      09-24-2006
Mickael Faivre-Macon wrote:
> What is called the process of adding a new method of an already defined class ?


Hi Mickael,

I'm not sure of any official technical name but I often see "extend"
used for a previously undefined method and "override" for redefining an
existing method.

> What if I want to declare a new class variable in the initialize method ?
> If it's a derived class I can call super:
> def initialize
> super
> @my_var = ""
> end
>
> but if it not derived ?
> How can I do this ?


Well a @var is an instance variable, a class variable has two @, like
@@var. but in either case, you would just add it (in ruby you just
assign to a variable and it comes into existence, not need to "declare"
them any special way).

class Tree
def initialize
@cat = 'in it'
@@dog = 'bark'
end
end

Regards,
Jordan

 
Reply With Quote
 
 
 
 
Robert Klemme
Guest
Posts: n/a
 
      09-24-2006
Mickael Faivre-Macon wrote:
> Hi,
>
> What is called the process of adding a new method of an already defined
> class ?
>
> For example:
>
> class A
> def a
> end
> end
>
> And in another file:
>
> class A
> def b
> end
> end
>
> And now my real question:
>
> What if I want to declare a new class variable in the initialize method ?
> If it's a derived class I can call super:
> def initialize
> super
> @my_var = ""
> end
>
> but if it not derived ?
> How can I do this ?


You can alias the old initialize method and replace it with another one:

irb(main):014:0> class A
irb(main):015:1> def initialize(x)
irb(main):016:2> @foo = x
irb(main):017:2> end
irb(main):018:1> end
=> nil
irb(main):019:0> a = A.new 10
=> #<A:0x38e4d0 @foo=10>
irb(main):020:0> class A
irb(main):021:1> alias initialize_old initialize
irb(main):022:1> def initialize(x)
irb(main):023:2> initialize_old x
irb(main):024:2> @bar = "foo"
irb(main):025:2> end
irb(main):026:1> end
=> nil
irb(main):027:0> b = A.new 20
=> #<A:0x374610 @bar="foo", @foo=20>

Kind regards

robert
 
Reply With Quote
 
Mickael Faivre-Macon
Guest
Posts: n/a
 
      09-24-2006
Thank you MonkeeSage for your precisions.
Thanks Robert, that's what I was looking for.

Mickael.

On 9/24/06, Robert Klemme <(E-Mail Removed)> wrote:
> Mickael Faivre-Macon wrote:
> > Hi,
> >
> > What is called the process of adding a new method of an already defined
> > class ?
> >
> > For example:
> >
> > class A
> > def a
> > end
> > end
> >
> > And in another file:
> >
> > class A
> > def b
> > end
> > end
> >
> > And now my real question:
> >
> > What if I want to declare a new class variable in the initialize method ?
> > If it's a derived class I can call super:
> > def initialize
> > super
> > @my_var = ""
> > end
> >
> > but if it not derived ?
> > How can I do this ?

>
> You can alias the old initialize method and replace it with another one:
>
> irb(main):014:0> class A
> irb(main):015:1> def initialize(x)
> irb(main):016:2> @foo = x
> irb(main):017:2> end
> irb(main):018:1> end
> => nil
> irb(main):019:0> a = A.new 10
> => #<A:0x38e4d0 @foo=10>
> irb(main):020:0> class A
> irb(main):021:1> alias initialize_old initialize
> irb(main):022:1> def initialize(x)
> irb(main):023:2> initialize_old x
> irb(main):024:2> @bar = "foo"
> irb(main):025:2> end
> irb(main):026:1> end
> => nil
> irb(main):027:0> b = A.new 20
> => #<A:0x374610 @bar="foo", @foo=20>
>
> Kind regards
>
> robert


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Adding method from one class to another class or to instance ofanother class marekw2143 Python 3 07-25-2009 08:33 PM
Adding a =~ method to the Method class Gabriel Saravia Ruby 4 05-07-2009 09:22 AM
instance method adding another instance method to the class Raj Singh Ruby 2 05-29-2008 10:09 PM
why a class can't access protected method from another class in thesame package,the method is interited from the ohtner class from differntpackage? junzhang1983@gmail.com Java 3 01-28-2008 02:09 AM
Nested Class, Member Class, Inner Class, Local Class, Anonymous Class E11 Java 1 10-12-2005 03:34 PM



Advertisments