我有一系列方法,如下所示:
def method1
1
end
def method2
2
end
m = [method1, method2]
我想打印m
中的方法名称和值,这样我就可以得到这样的输出:
method1: 1
method2: 2
是否可以将已定义方法的名称作为字符串或符号?如何获得字符串或符号形式的方法名?
在m = [ method1, method2 ]
行之后,变量m
不再有关于为将[1, 2]
分配给m
而调用的方法的信息。
因此,与其存储方法返回的值,我只想将方法名称存储在数组中,并在需要它们的名称和返回值时使用public_send
调用该方法:
m = [:method1, :method2]
def method1
1
end
def method2
2
end
m.each { |name| puts "#{name}: #{public_send(name)}" }
# => method1: 1
# method2: 2
或者,当将tehm分配给m
:时,您可能希望立即使用哈希来存储方法名称和返回的值
m = { method1: method1, method2: method2 }
m.each { |name, value| puts "#{name}, #{value}" }