在Ruby中获取方法名称为字符串或符号

时间:2018-08-03 08:22:27

标签: ruby methods

我有一系列这样的方法:

def method1
  1
end

def method2
  2
end

m = [method1, method2]

我想打印m中的方法名称和值,以便得到如下输出:

method1: 1
method2: 2

是否可以获得字符串或符号形式的已定义方法的名称?如何获得方法名称的字符串或符号?

1 个答案:

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