Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Объясните..


Автор: DimanLin 3.6.2010, 09:33
  def author_names
    authors.map(&:name) # => ["John", "Bob"]
  end

Что делает "&" в данном контексте?
Если можно напишите раздел в Ruby, где это можно почитать. Ну или урл..

Автор: shine 3.6.2010, 10:24
По-другому можно написать вот так:

Код

authors.map{|item| item.name}


Отличие только в краткости и в том, что на некоторых старых версиях Ruby без Rails это работать не будет. Ищи статьи типа "10 тонкостей Ruby о которых вам стоит знать"

Автор: niksan 3.6.2010, 10:31
По моему, еще время выполнения значительно медленнее.
Вот статья по этому способу http://blog.hasmanythrough.com/2006/3/7/symbol-to-proc-shorthand

Автор: shine 3.6.2010, 16:04
niksan, статья за 2006 год. По меркам Ruby/Rails это каменный век smile Думаю сейчас все гораздо более кучеряво.

Автор: source777 3.6.2010, 20:27
Цитата(shine @  3.6.2010,  16:04 Найти цитируемый пост)
Думаю сейчас все гораздо более кучеряво. 

Синтаксический сахар всегда работает медленнее:
Код

Ruby 1.8.7 EE
                           user     system      total        real
Using Symbol#to_proc   0.970000   0.010000   0.980000 (  0.982171)
Standard call          0.520000   0.000000   0.520000 (  0.526094)


Код

Ruby 1.9.1
                           user     system      total        real
Using Symbol#to_proc   0.700000   0.000000   0.700000 (  0.689645)
Standard call          0.460000   0.000000   0.460000 (  0.460039)


Впрочем для Rails-программистов, да и для остальных веб-программистов, чаще всего читабельность будет превыше скорости выполнения отдельных инструкций. 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)