Шрифт:
По техническим причинам Ruby не считает конструкцию
Понятно, что новый квантор — не более чем удобное обозначение, никакой новой функциональности он не несет.
3.13.6. Именованные соответствия
Специальной формой подвыражения является именованное выражение, которое позволяет присвоить образцу имя (а не просто порядковый номер).
Синтаксически это выглядит так: (
Для чего может понадобиться именованное выражение? Например, для того, чтобы сослаться на него внутри обратной ссылки. Ниже приведен пример простого регулярного выражения для сопоставления с повторяющимся словом (см. также раздел 3.14.6):
Здесь мы запомнили слово, а затем сослались на него по номеру
Второй вариант длиннее, зато понятнее. (Имейте в виду, что в одном и том же регулярном выражении нельзя использовать и именованные, и нумерованные обратные ссылки.) Если нравится, пользуйтесь!
В Ruby уже давно можно включать обратные ссылки в строки, передаваемые методам
Еще одно возможное применение именованных выражений — повторное употребление выражения. В таком случае перед именем ставится символ
Обратите внимание, что этот образец многократно употребляется с помощью маркера
Нотацией
И последнее замечание об именованных соответствиях. В самых последних версиях Ruby имя (в виде строки или символа) может передаваться методу
Как видите, обычные индексы тоже не запрещены. Обсуждается возможность добавить в объект
Но во время работы над книгой это еще не было реализовано.