Изучение синтаксиса Ruby Heredoc: руководство по неинтерполированным Heredoc

Синтаксис heredoc Ruby — это удобный способ определения многострочных строк. По умолчанию heredoc поддерживает интерполяцию строк, что позволяет вам встраивать код Ruby в содержимое heredoc. Однако существуют сценарии, в которых вы можете использовать heredocs без интерполяции. В этой статье мы рассмотрим различные методы получения неинтерполированных наследственных документов в Ruby, а также приведем примеры кода.

Метод 1: использование одинарных кавычек
Один простой подход — заключить разделитель heredoc в одинарные кавычки. Это говорит Ruby обрабатывать содержимое heredoc как необработанную строку без какой-либо интерполяции.

non_interpolated_heredoc = <<'EOS'
  This is a non-interpolated heredoc.
  #{1 + 1} will not be evaluated.
EOS
puts non_interpolated_heredoc

Метод 2: экранирование разделителя
Другой способ создать неинтерполированный документ — экранирование разделителя. Поместив обратную косую черту перед разделителем, Ruby рассматривает heredoc как простую строку без какой-либо интерполяции.

non_interpolated_heredoc = <<EOS.gsub('\\', '')
  This is a non-interpolated heredoc.
  #{1 + 1} will not be evaluated.
EOS
puts non_interpolated_heredoc

Метод 3: использование синтаксиса <<~.
Начиная с Ruby 2.3, вы можете использовать синтаксис <<~для создания неинтерполированного heredoc, игнорируя ведущие пробелы. Этот синтаксис обрезает начальные пробелы, делая документ более читабельным.

non_interpolated_heredoc = <<~EOS
  This is a non-interpolated heredoc.
  #{1 + 1} will not be evaluated.
EOS
puts non_interpolated_heredoc

Метод 4. Использование синтаксиса <<-.
Синтаксис <<-позволяет создавать неинтерполированные наследственные документы, сохраняя при этом начальные пробелы. Этот метод полезен, если вы хотите сохранить отступы внутри документа.

non_interpolated_heredoc = <<-EOS
  This is a non-interpolated heredoc.
  #{1 + 1} will not be evaluated.
EOS
puts non_interpolated_heredoc

В этой статье мы рассмотрели различные методы создания неинтерполированных наследственных документов в Ruby. Используя одинарные кавычки, экранируя разделитель или используя синтаксис <<~и <<-, вы можете эффективно отключить интерполяцию строк в heredocs. Понимание этих методов расширяет ваши возможности при работе с многострочными строками в Ruby.

Не забудьте выбрать метод, который лучше всего соответствует вашим потребностям, исходя из того, хотите ли вы сохранить отступы, удалить начальные пробелы или использовать более чистый синтаксис. Неинтерполированные Heredocs обеспечивают гибкость для различных вариантов использования и могут улучшить читаемость и удобство обслуживания вашего кода.