Ruby中的"<<-"是什么意思?

38
例如:
code = <<-EOH
    bundle install
    bundle exec unicorn -c /etc/unicorn.cfg -D
EOH

这段代码做了什么?<<- 这是什么意思?


5
Symbolhound 是一种可以搜索 Google 无法处理的语法的方法。 - Andrew Grimm
3个回答

47

这被称为heredoc。一种轻松定义多行字符串的方法,可以包含单引号或双引号而无需转义。

例如,请参见此处

通常使用heredocs来定义大块的代码。 一些编辑器知道这个并且可以在那里为您突出语法(如果您指定了语言)。看:

strings vs heredocs


1
我喜欢语法高亮,并且今天第一次学到了。 - Arup Rakshit

8

哦,错过了这个。 - Sergio Tulentsev

4

在我看来,这似乎是heredoc。 - 允许结束定界符忽略其前面的空格。

通过简单的谷歌搜索,我找到了这个


1
Heredocs在谷歌上搜索会很麻烦。如果你以前从未遇到过这个概念和实现方式,那么它们都很奇怪。 - Joseph Yaduvanshi
我以前从未听说过heredoc,所以谷歌搜索毫无结果。有时候很难给未知符号命名。 - fontno
在bash/shell中,<<-END会去除前面的空格,但在Ruby中并不是那么简单。请查看我的答案,其中包含了2.3.x版本中引入的一些功能平衡变化,同时需要使用新的语法。 - dragon788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接