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 的开始,底部的标记(不得缩进,除非您在开始标记前放置一个“-”)指定结束。
我正在研究 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 的开始,底部的标记(不得缩进,除非您在开始标记前放置一个“-”)指定结束。