Комментарии 15
dict.map {|v| v[1] << "test" }
# или
dict.map {|k, v| [k, v << "test"]}.to_h
но это довольно некрасивая конструкция. Тогда как
dict.map {|k, v| v << "test" }
создаст array из значений.
не dictionary, а hash.
либо hash.reduce({}) { ... }
/ hash.each_with_object({}) { ... }
либо рельсовые transform_keys
и transform_values
Я думаю, вам нужен такой сниппет:
Hash[dict.map { |k, v| [k, "#{v}test"] }]
Кстати, обратите внимание, что метод <<
меняет переменную, на которой вызывается, а это явно неожиданный результат для того, кто будет читать ваш код (от map
ожидают создания копии и неизменения содержимого оригинальной переменной). Поэтому лучше использовать интерполяцию (заодно не будет ломаться на нестроковых значениях).
Если же вам нужно именно изменить существующий хэш, то просто используйте each
:
dict.each { |_k, v| v << "test" }
Как по мне, всё нормально. Вот только: нафига лезть в незадокументированный модуль? Ведь почти тоже самое есть в глобальных константах RUBY_whatever
, где whatever
— нужное значение, например — RUBY_VERSION
. Весь их список можно посмотреть в irb.
14 из перла, конечно, появилось. Обычный триггер. Триггер переключается в истинное состояние, когда срабатывает первое условие и обратно, когда второе. Полезно когда нужно отпарсить кусок, начинающийся с какого-то "слова" и заканчивающийся другим. Тот же heredoc, например.
За пункт 2 ваш рубокоп должен больно бить вас по рукам, не делайте так: https://github.com/bbatsov/ruby-style-guide#double-colons
Пункт 14 называется flip-flop и его уже предлагали выпилить его из Ruby, потому что сильно взрывает мозг.
За $N
Rubocop тоже бьёт линейкой: https://github.com/bbatsov/ruby-style-guide#regular-expressions, возможно, кстати, как раз из-за этой недоваренности, но ещё там проблемы с многопоточностью были, КМК.
А когда нужно писать именно Proc.new.call(arg)
и не работает просто yield arg
? Или это именно та самая странность-странность (мне мозг подвзорвало, да)?
Ах да, сокращение вызова метода call
просто до точки — это тоже прикольная и удобная странность, которую вовсю в широкие массы пихает автор Trailblazer'а.
15 странностей в Ruby, о которых вам стоит знать