В Ruby, что это значит, когда многострочный комментарий начинается с <<
?Что это значит, когда комментарий с несколькими строками начинается с <<
ответ
Он определяет способ ввода нескольких строк кода, который будет игнорироваться интерпретатором Ruby. Эта многострочная литеральная функция называется «Вот документы» (сокращенно до «heredoc»). Обсуждаемые здесь ...
https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents
Вы кладете свой собственный «ключевое слово» после <<
, а затем использовать те же ключевые слова после последней строки, так что Руби знает, где назначение многострочных останавливается.
x = 1
<<-endofstuff
x = 2
x += 1
endofstuff
p x
=> 1
Вы можете увидеть линии между < < и ключевым словом игнорируется.
Однако это не комментарий в обычном смысле и занимает некоторое распределение памяти. Скорее всего, там, где вы видели, что это произошло, на самом деле, используется для создания литерала, который был назначен переменной или передан методу.
Использование 'heredoc' для комментариев не рекомендуется и не было оригинальным намерением этой функции. Если использовать для комментариев, это может смутить кого-то, просматривающего код, особенно длинный блок кода.
Используйте (вместо этого) соглашение и =end
или даже лучше для ясности, явное #
перед каждой прокомментированной строкой.
Я не уверен, почему вы называете это многострочное задание. Это всего лишь многострочный строковый литерал. Никакое назначение не требуется, например, вы можете передать его напрямую в качестве аргумента метода. Также вы используете форму «<< -», которая позволяет пустое пространство появляться перед ключевым словом закрытия. – Max
Это синтаксис для строк, а не комментариев. –
Да, @SergioTulentsev, но он может использоваться для комментариев и упоминается как «многострочные комментарии», это назначение строк без принимающей переменной. Я не говорю, что это отличная техника, и это не то, что я делаю, но она отвечает на вопрос OP. – SteveTurczyn
Это синтаксис для многострочных строк, а не комментариев. Термин «heredocs» –