Skip to content

Instantly share code, notes, and snippets.

@tansengming
Created November 3, 2009 02:55
Show Gist options
  • Save tansengming/224733 to your computer and use it in GitHub Desktop.
Save tansengming/224733 to your computer and use it in GitHub Desktop.
some notes to help me with define_method
# here lies some notes to help me with define_method
class MetaTest
define_method(:meta_1) do
puts 'm.meta_1'
end
def initialize
@a_var = 'iable'
end
define_method(:meta_2) do
puts 'm.meta_2 with a_var' + @a_var
end
# don't do this
class_eval %Q?
def meta_3
puts 'm.meta_3 with a_var' + @a_var + ' with class_eval'
end
?
# don't do this
instance_eval %Q?
def meta_4
puts 'MetaTest.meta_4 with instance_eval'
end
?
class << self
define_method(:meta_5) do
puts 'MetaTest.meta_5 with define_method'
end
end
end
m = MetaTest.new
m.meta_1
m.meta_2
m.meta_3
MetaTest.meta_4
MetaTest.meta_5
# Output
# m.meta_1
# m.meta_2 with a_variable
# m.meta_3 with a_variable with class_eval
# MetaTest.meta_4 with instance_eval
# MetaTest.meta_5 with define_method
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment