template = <<-TPL.gsub(/^\s+/,'')
╭───────╮
| X X X |
| X X X |
| X YYX |
| X X X |
╰───────╯
TPL
这是一个从gem rubycards
的摘录。<< - 是否意味着红宝石?
我知道它在模板中存储了一些字符串。但是<<-
是做什么的?
template = <<-TPL.gsub(/^\s+/,'')
╭───────╮
| X X X |
| X X X |
| X YYX |
| X X X |
╰───────╯
TPL
这是一个从gem rubycards
的摘录。<< - 是否意味着红宝石?
我知道它在模板中存储了一些字符串。但是<<-
是做什么的?
它被称为heredoc:
如果你正在写文本的一大块,你可以使用“立即文档” 或“定界符”:
expected_result = <<HEREDOC This would contain specially formatted text. That might span many lines HEREDOC
的定界符的开始line following < < HEREDOC并以 以HEREDOC开头的下一行结束。结果包括结尾 换行符。
您可以使用带有heredoc的任何标识符,但通常使用全部大写的 标识符。
expected_result = <<-INDENTED_HEREDOC This would contain specially formatted text. That might span many lines INDENTED_HEREDOC
注意,而结束标识符可缩进时, 内容总是被看作它是齐平: - “” <后<
如果你把一个你可以缩进结束标识符剩下。如果您缩进 内容,则这些空格将显示在输出中。
不幸的是,Ruby中的<<
运算符有很多用途。但是,在您的具体情况下,<<
用于声明跨越多行的字符串。这可以让你获得矩阵看标准输出。
What does << mean in Ruby?是一个有很多其他链接
问题是关于'<< - ',而不是'<<':) –
对不起,TPL没有缩进,所以我以为他甚至不想知道 - 是什么。 –
这个功能在这里被称为doc。这是一种定义多行字符串的方法。结果包含'<< - TPL'和'TPL'之间的所有**行**。 'gsub(/^\ s + /,'')'应用于此字符串。 – sschmeck
@Jordan:'duplicate'和''解决了我的问题'标签有什么区别? – InQusitive