<< - 意思是Ruby

Lir*_*roy 4 ruby

<<-在以下方法/上下文中意味着什么?

class_eval <<-RUBY, __FILE__, __LINE__ + 1
def destroy_associations
  association(:#{middle_reflection.name}).delete_all(:delete_all)
  association(:#{name}).reset
  super
end
RUBY
Run Code Online (Sandbox Code Playgroud)

Sir*_*ius 8

它表示多行字符串的开头,也称为"heredoc".

格式可以是:

<<[ID]
contents
[ID]
Run Code Online (Sandbox Code Playgroud)

要么

<<-[ID]
contents
[ID]
Run Code Online (Sandbox Code Playgroud)

不同之处在于,在第一种情况下,结束[ID]必须位于该行的开头,而在第二种情况下,[ID]可以缩进以具有更清晰的代码.


Wil*_*ler 5

它是"heredoc"或多行字符串.这<<-RUBY是开始,而RUBY它本身就是结束.

http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html


saw*_*awa 5

它描述了这里文档的开头.你可能会感到困惑的是,这里的文件从下一行开始; 该行中该表达式后面的所有内容都是here文档的延续.因此,鉴于此处文档的内容表示为heredoc,表达式相当于:

class_eval heredoc, __FILE__, __LINE__ + 1
Run Code Online (Sandbox Code Playgroud)

这意味着在类环境中评估here文档的内容,并且每当引发错误时,将该位置与当前文件(__FILE__)相关联,并且here文档的第一行(即开头之后的行__LINE__ + 1)应该是算作第1行.