Created
November 3, 2009 02:55
-
-
Save tansengming/224733 to your computer and use it in GitHub Desktop.
some notes to help me with define_method
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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