在Hash中,每个值都是一个数组,如何使用数组项查找键?

Ede*_*dau 1 ruby arrays hash

我有一个哈希.其中,每个键的值都是一个数组.我想测试一个值是否在其中一个数组中,如果是,则测试它对应于哪个键.例如,假设我正在编写一个带有命令列表的命令行程序,并且每个命令都有一些昵称,如下所示:

commands = {
  :exit => ['exit', 'ex'],
  :start_car => ['start_engine', 'start'],
  :accelerate => ['speed_up', 'accelerate'],
  :help => ['help', '?']
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我想要启动汽车,我可以进入任何一个start_enginestart两个都可以工作.

我们还要说我需要一个函数来测试给定的字符串是否是命令的名称.如果没有,请返回false.如果是这样,返回命令的名称,如下所示:

def is_command? string
  if # string is a nickname
    # return the key to which it belongs, i.e. 'ex' to :exit
  else
    return false
  end
end
Run Code Online (Sandbox Code Playgroud)

我试着浏览Hashes and Arrays的函数列表,但我找不到任何东西,我甚至无法开始考虑如何使用Google这样的东西.任何帮助都会非常受欢迎.

Mau*_*res 5

用途find:

commands = {:exit => ['exit', 'ex'], :start_car => ['start_engine', 'start'], :accelerate => ['speed_up', 'accelerate'], :help => ['help', '?']}
commands.find { |key,value| value.include?( '?' ) }
> [:help, ["help", "?"]] 
Run Code Online (Sandbox Code Playgroud)