¿Es esta la mejor manera de obtener elementos comunes de un hash de matrices?

Estoy tratando de obtener un elemento común de un grupo de matrices en Ruby. Normalmente, puedes usar el& operador para comparar dos matrices, que devuelve elementos que están presentes o comunes en ambas matrices. Todo esto es bueno, excepto cuando intentas obtener elementos comunes de más dedos matrices Sin embargo, quiero obtener elementos comunes de undesconocido, número dinámico de matrices, que se almacenan en un hash.

Tuve que recurrir al uso del método eval () en ruby, que ejecuta una cadena como código real. Aquí está la función que escribí:

  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

Esto funciona y es genial, pero me pregunto ...eval, en serio? ¿Es esta la mejor manera de hacerlo? ¿Hay inclusoalguna otras formas de lograr esto (además de una función recursiva, por supuesto). Si alguien tiene alguna sugerencia, soy todo oídos.

De lo contrario, siéntase libre de usar este código si necesita obtener un elemento o elemento común de un grupo o hash de matrices, este código también se puede adaptar fácilmente para buscar una matriz de matrices.

Respuestas a la pregunta(3)

Su respuesta a la pregunta