我有一系列这样的方法:
def method1
1
end
def method2
2
end
m = [method1, method2]
我想打印m
中的方法名称和值,以便得到如下输出:
method1: 1
method2: 2
是否可以获得字符串或符号形式的已定义方法的名称?如何获得方法名称的字符串或符号?
答案 0 :(得分:4)
此后,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}" }