在ruby中以字符串或符号的形式获取方法名



我有一系列方法,如下所示:

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}" }

最新更新