Essa é a melhor maneira de obter elementos comuns de um hash de matrizes?

Estou tentando obter um elemento comum de um grupo de matrizes em Ruby. Normalmente, você pode usar o& operador para comparar duas matrizes, que retorna elementos presentes ou comuns nas duas matrizes. Tudo isso é bom, exceto quando você está tentando obter elementos comuns de mais dedois matrizes. No entanto, quero obter elementos comuns de umnúmero dinâmico desconhecido de matrizes, que são armazenados em um hash.

Eu tive que recorrer ao uso do método eval () em ruby, que executa uma string como código real. Aqui está a função que escrevi:

  def get_common_elements_for_hash_of_arrays(hash) # get an array of common elements contained in a hash of arrays, for every array in the hash.
       # ["1","2","3"] & ["2","4","5"] & ["2","5","6"] # => ["2"]
       # eval("[\"1\",\"2\",\"3\"] & [\"2\",\"4\",\"5\"] & [\"2\",\"5\",\"6\"]") # => ["2"]
       eval_string_array = Array.new # an array to store strings of Arrays, ie: "[\"2\",\"5\",\"6\"]", which we will join with & to get all common elements
       hash.each do |key, array|
          eval_string_array << array.inspect 
       end
       eval_string = eval_string_array.join(" & ") # create eval string delimited with a & so we can get common values 
       return eval(eval_string)
  end

example_hash = {:item_0 => ["1","2","3"], :item_1 => ["2","4","5"], :item_2 => ["2","5","6"] }
puts  get_common_elements_for_hash_of_arrays(example_hash) # => 2

Isso funciona e é ótimo, mas eu estou pensando ...avaliação, realmente? Esse é o melhor jeito de fazer isso? Existem mesmoqualquer outras maneiras de conseguir isso (além de uma função recursiva, é claro). Se alguém tiver alguma sugestão, sou todo ouvidos.

Caso contrário, fique à vontade para usar esse código se precisar pegar um item ou elemento comum de um grupo ou hash de matrizes, esse código também pode ser facilmente adaptado para pesquisar uma matriz de matrizes.

questionAnswers(3)

yourAnswerToTheQuestion