Как отфильтровать хеш из массива символов?

Итак, у меня есть хеш, который я хотел бы отфильтровать на основе массива:

h = {a: 'test1', b: 'test2', c: 'test3'}
a = [:a, :poo1, :poo2]

Первой моей мыслью было попробовать:

h.slice(a)

Но это возвращает {}, хотя я надеялся, что вернется {:a=>"test1"}. Кажется, я не могу найти простой способ фильтрации моего хэша на основе массива символов. Мысли?


person Joey    schedule 17.10.2013    source источник


Ответы (1)


Вы можете решить эту проблему с помощью оператора splat:

h.slice(*a)

Это произведет

> {:a=>"test1"}

Для объяснения того, что делает звездочка, см. this ссылка.

person Sander    schedule 17.10.2013