randomvalue1, "bar" => randomvalue2, "baz" => randomvalue3 } Я придумываю следующий путь: Hash[* a.map { |value| [value,"> randomvalue1, "bar" => randomvalue2, "baz" => randomvalue3 } Я придумываю следующий путь: Hash[* a.map { |value| [value,"> randomvalue1, "bar" => randomvalue2, "baz" => randomvalue3 } Я придумываю следующий путь: Hash[* a.map { |value| [value," />

Используйте множество в качестве ключей и произведите ценности, чтобы произвести мешанину

У меня есть множество. Как пример:

a = ["foo", "bar", "baz"]

Я хочу преобразовать его в мешанину:

h = { "foo" => randomvalue1, "bar" => randomvalue2, "baz" => randomvalue3 }

Я придумываю следующий путь:

Hash[* a.map { |value| [value, randomvalue_generator] }.flatten]

Мой опыт с Руби вполне ограничил, но имейте чувство, что должен быть более простой способ сделать это. Главным образом, я интересуюсь сокращением кодовой сложности.

1
nl ja de

1 ответы

Your way is fine except you do not need to flatten or splat

a = ["foo", "bar","baz"]
Hash[a.map{ |k| [k, rand(5)] }]
# {"foo"=>1, "bar"=>0, "baz"=>2} 

Там много других способов достигнуть этого, но мне нравится ваше оригинальное решение.

a.each_with_object({}){ |k, h| h[k] = rand(5) }

a.inject({}){ |h, k| h[k] = rand(5); h }

a.inject({}){ |h, k| h.merge k => rand(5) }

Hash[a.zip a.map{ |_| rand(5) }]
1
добавлено
@YevgeniyAnfilofyev хороший!
добавлено автор Kyle, источник
Мешанина [a.zip ([*0.. 50] .sample (3))]
добавлено автор Yevgeniy Anfilofyev, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков