Ruby: <<- 运算符

Ruby: <<- operator

我正在研究 Rails。在我的代码库中,我看到一行使用 Arel::SqlLiteral 像这样:

result = Arel::Nodes::SqlLiteral.new(<<-SQL
  CASE WHEN condition1 THEN calculation1
  WHEN condition2 THEN calculation2
  WHEN condition3 THEN calculation3
  ELSE default_calculation END
SQL)

我明白这段代码的作用。我不明白的是它的语法,此时:

Arel::Nodes::SqlLiteral.new(<<-SQL
  ...
  SQL
)

所以在ruby中,<<-的语法是什么,后面跟着名字,然后在最后一个块我们调用那个名字。

谢谢

您要查找的关键字是"Heredoc"。

https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents

主要用于美化大文本和shells/shellscripts的常用做法。顶部的标记表示 heredoc 的开始,底部的标记(不得缩进,除非您在开始标记前放置一个“-”)指定结束。