Что означает карта (& amp;: name) в Ruby?

[хотел снять этот комментарий с ответа CMS, но я полагаю, что мне еще не разрешено. : -P]

Вот небольшая функция, которую я использовал для обработки парсинга этой проблемы (функция будет продолжать делать правильную вещь после того, как реализации браузера догонят спецификацию, поэтому не нужно не забудьте изменить код позже):

function parse(type) {
   return typeof type == 'string' ? JSON.parse(type) : type;
}
478
задан user513951 16 January 2016 в 13:49
поделиться

3 ответа

Это сокращение для tags.map (&: name.to_proc) .join ('' )

Если foo является объектом с методом to_proc , то вы можете передать его методу как & foo , который вызовет foo .to_proc и использовать его как блок метода.

Метод Symbol # to_proc изначально был добавлен ActiveSupport, но был интегрирован в Ruby 1.8.7. Это его реализация:

class Symbol
  def to_proc
    Proc.new do |obj, *args|
      obj.send self, *args
    end
  end
end
510
ответ дан 22 November 2019 в 22:45
поделиться

Это сокращение для tags.map {| tag | tag.name} .join ('')

38
ответ дан 22 November 2019 в 22:45
поделиться

Это эквивалентно

def tag_names
  @tag_names || tags.map { |tag| tag.name }.join(' ')
end
76
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: