Организовать массив символов и хэшей - PullRequest
1 голос
/ 19 сентября 2019

Есть ли более эффективный способ сделать это?

items = [:one, :two, {three: 3}, {four: 4}, :five, :six]  # => [:one, :two, {:three=>3}, {:four=>4}, :five, :six]

symbols = items.select { |n| n.class == Symbol }              # => [:one, :two, :five, :six]
params = items.select { |n| n.class == Hash }.reduce(:merge)  # => {:three=>3, :four=>4}
symbols << params                                             # => [:one, :two, :five, :six, {:three=>3, :four=>4}]

1 Ответ

2 голосов
/ 19 сентября 2019

Если в массиве только символы и хэши, вы можете использовать раздел и получить тот же результат за 2 шага:

s, h = items.partition {|i| i.class == Symbol}
s << h.reduce(&:merge)
#=> [:one, :two, :five, :six, {:three=>3, :four=>4}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...