Я ищу способ Ruby-est решить проблему.Динамически создавать хэш и массивы
У меня есть код формы, похожее на это в моем приложении:
data = [1,2,3,4]
a = []
b = []
h = {}
data.each do |val|
h[val] = func1(val)
a.push func2(val)
b.push func3(val)
end
Это, конечно, упрощение. То, что я хотел бы сделать, учитывая такой код, чтобы исключить строки 2-4 этого фрагмента кода, так что у меня есть что-то вроде:
h, a, b = data.some_func{|val|
# do something
}
Мой инстинкт, что map
не будет достаточно, но Я не уверен, что мне нужно. Мой код работает, но он не выглядит очень румяным. Что я должен здесь делать?
+1 Вот как я это сделаю. – Kyle
Спасибо. Я буду использовать что-то похожее, я уверен. Я, вероятно, упростил мой пример - в фактическом коде, а и b инициализируются на основе ссылок на то, что находится в h, поэтому я думаю, что each_with_object на h, за которым следует создание a и b, удалит пустые inits без ухудшения удобочитаемости. – asfallows