how can I get the following to work, what am I not understanding about
how modules work?
module MakeMethod
def self.make_method( name )
define_method( name ) do |count|
puts “you called method #{name.to_s}”
puts “the count is #{count}”
end
end
end
class Person
include MakeMethod
make_method :hello
make_method :bye
def initialize( name )
@name = name
end
def greet
puts "Hello! I'm #{@name}"
end
end
–
Kind Regards,
Rajinder Y.
On 10-10-09 09:16 PM, Rajinder Y. wrote:
how can I get the following to work, what am I not understanding about
how modules work?
i realized i posted to the rails thread instead of the ruby thread =P
still if someone can please answer this, thanks!
–
Kind Regards,
Rajinder Y.
On Sun, Oct 10, 2010 at 9:16 AM, Rajinder Y. [email protected]
wrote:
how can I get the following to work, what am I not understanding about how
modules work?
there are many ways, but i usually start as simple as possible,
creating modules by fxn. classes simple as possible
we have module that defines method
module MakeMethod
def make_method( name )
define_method( name ) do |count|
puts “you called method #{name.to_s}”
puts “the count is #{count}”
end
end
end
we have module that modifies a class and creates corr methods
module MethodMaker
class << self
include MakeMethod
end
make_method :hello
make_method :bye
end
we create class, as simple as possible
class Person
def initialize( name )
@name = name
end
def greet
puts “Hello! I’m #{@name}”
end
end
we create person class. it works
j=Person.new “rajin”
but hello method does not work yet since we’ve not defined it yet on
person class
j.hello 1 => will err here
now we modify person
class Person
include MethodMaker
end
the new methods now work
j.hello 1
j.bye 1
best regards
-botp
On 10-10-09 10:50 PM, botp wrote:
define_method( name ) do |count|
end
def initialize( name )
j=Person.new “rajin”
the new methods now work
j.hello 1
j.bye 1
best regards
-botp
what i would like to do is be able to use make_method from class Person,
like:
class Person
include MethodMaker
make_method :hello
make_method :bye
end
–
Kind Regards,
Rajinder Y.
You should read about the difference between include' and
extend’
keywords.
module MakeMethod
def make_method( name )
define_method( name ) do |count|
puts “you called method #{name.to_s}”
puts “the count is #{count}”
end
end
end
class Person
extend MakeMethod
make_method :hello
end
Robert Pankowecki
On 10-10-10 03:45 AM, Robert Pankowecki (rupert) wrote:
end
class Person
extend MakeMethod
make_method :hello
end
Robert Pankowecki
Thanks Robert for pointing this out!
–
Kind Regards,
Rajinder Y.