Как стать автором
Обновить

Комментарии 15

В Руби есть способ не конвертировать dictonary в array при использовании map? Можно конечно
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, например.

И 13 пункт тоже строго из Perl.

А в перле из awk :)

НЛО прилетело и опубликовало эту надпись здесь

За $N Rubocop тоже бьёт линейкой: https://github.com/bbatsov/ruby-style-guide#regular-expressions, возможно, кстати, как раз из-за этой недоваренности, но ещё там проблемы с многопоточностью были, КМК.

НЛО прилетело и опубликовало эту надпись здесь

А когда нужно писать именно Proc.new.call(arg) и не работает просто yield arg? Или это именно та самая странность-странность (мне мозг подвзорвало, да)?


Ах да, сокращение вызова метода call просто до точки — это тоже прикольная и удобная странность, которую вовсю в широкие массы пихает автор Trailblazer'а.

НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории