Каковы плюсы и минусы общего рубинового ввода? (процентный синтаксис) - PullRequest
9 голосов
/ 14 февраля 2010

Я не понимаю, почему некоторые люди часто используют процентный синтаксис в ruby.

Например, я читаю руководство по плагину ruby ​​ и использует такой код, как:

%w{ models controllers }.each do |dir|
  path = File.join(File.dirname(__FILE__), 'app', dir)
  $LOAD_PATH << path
  ActiveSupport::Dependencies.load_paths << path
  ActiveSupport::Dependencies.load_once_paths.delete(path)
end

Каждый раз, когда я вижу что-то подобное, мне приходится искать справочную информацию о синтаксисе в процентах, потому что я не помню, что означает% w.

Этот синтаксис действительно предпочтительнее ["models", "controllers"].each ...?

Я думаю, что в этом последнем случае более ясно, что я определил массив строк, но в первом - особенно для того, кто изучает рубин - это не кажется таким ясным, по крайней мере, для меня.

Если кто-то может сказать мне, что я здесь упускаю какой-то ключевой момент, тогда, пожалуйста, сделайте это, так как мне трудно понять, почему синтаксис процента предпочитается подавляющим большинством программистов на ruby.

Ответы [ 4 ]

15 голосов
/ 14 февраля 2010

Одно хорошее применение для ввода с разделителями общего характера (как называются% w,% r и т. Д.), Чтобы избежать необходимости использовать экранирующие разделители. Это особенно полезно для литералов со встроенными разделителями. Сравните регулярное выражение

  /^\/home\/[^\/]+\/.myprogram\/config$/

с

  %r|^/home/[^/]+/.myprogram/config$|

или строка

  "I thought John's dog was called \"Spot,\" not \"Fido.\""

с

  %Q{I thought John's dog was called "Spot," not "Fido."}

По мере того, как вы будете читать больше Ruby, значение общего разделенного ввода (% w,% r и т. Д.), А также другие особенности и идиомы Ruby станут понятны.


Я считаю, что не случайно у Руби часто есть несколько способов сделать то же самое. Ruby, как и Perl, кажется постмодернистским языком : минимализм - это не основные ценности, а лишь одна из многих конкурирующих дизайнерских сил.

3 голосов
/ 14 февраля 2010

Легко запомнить: %w{} для «слов», %r{} для регулярных выражений, %q{} для «кавычек» и т. Д. ... Это довольно легко, когда вы создаете такие вспомогательные средства памяти.

2 голосов
/ 14 февраля 2010

Синтаксис %w сбрасывает 3 символа с каждого элемента в списке ... не может побить это!

alt text

2 голосов
/ 14 февраля 2010

По мере увеличения размера массива синтаксис %w сохраняет все больше и больше нажатий клавиш, не заставляя вводить все кавычки и запятые. По крайней мере, это причина, приведенная в Learning Ruby .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...