Friday, July 06, 2007

difference usage obj.send and mod.module_eval


class A
def fred
puts "In Fred"
end

def create_method(name, &block)
self.class.send(:define_method, name, &block) # obj.send
end

def custom_method(name, &block)
self.class.module_eval {define_method(name, &block)} # mod.module_eval, class_eval alias module_eval
# A.module_eval {define_method(name, &block)}
end

define_method(:wilma) { puts "Charge it!" }

end

class B < A
define_method(:barney, instance_method(:fred)) #
end

b = B.new
p b

b.barney

b.wilma

b.create_method(:betty) { puts 'betty' }
b.betty

b.custom_method(:test) {puts 'test'}
b.test

##
#In Fred
#Charge it!
#betty
#test

No comments :