哈希键作为方法标识符

时间:2012-06-12 15:18:36

标签: ruby hash

我有一些像这样的红宝石代码:

my_hash = {
  key1: "value", 
  key2: "value"
}

def key1
  do_something
end

def key2
  do_something_else
end

正如您所看到的,键和方法具有相同的名称。我现在想要将哈希键“转换”为方法调用,其中方法名称是哈希键

作为背景,我有一个ncurses菜单,其中哈希值是标签,我只传递密钥。当选择一个菜单项时,我想执行正确的方法而不需要太多的编码开销,比如在if或case语句中找出选择了哪个条目。

这有可能吗?如果是,我该怎么做?

这件事对我来说有点难以解释,我希望你明白我的意思。

1 个答案:

答案 0 :(得分:1)

使用send使用符号名称调用方法:

my_hash.each { |k,_| send k }

这将调用哈希中的所有方法。您可以选择一个并使用send进行调用,而不是迭代。