ruby 中 define_methond 的笔记
define_method可以创建以变量值为方法名的方法。
样例1错误、样例2正确、样例3错误、样例4正确、样例5正确,初学ruby,对其中原理没有深究,用作自己参考。
- 最开始是这么写的
module Colorize
def color_modes
{
:default => 0,
:bold => 1,
:green =>2
}
end
def modes
color_modes.keys
end
def modes_methods
modes.each do |key|
puts key
define_method "#{
key}" do
puts key
end
end
end
module_function :modes_methods
end
Colorize.modes_methods
运行,输出以下错误
test2.rb:13:in `modes_methods': undefined local variable or method `modes' for Colorize:Module