【问题标题】:What's the difference between <<-EOH and <<~EOH (if there is any) in rubyruby 中 <<-EOH 和 <<~EOH(如果有的话)有什么区别
【发布时间】:2019-10-03 20:17:41
【问题描述】:

&lt;&lt;-EOH&lt;&lt;~EOH 有什么区别吗?

我对此提出质疑,因为当我使用 &lt;&lt;-EOH 时,Brackets 没有正确突出显示 ruby​​/chef 代码,而且我已经有大量代码以这种方式在生产中运行。因此,当一切正常且唯一的问题是我的编辑无法突出显示时,不可能批准我的 PR。

当我将&lt;&lt;-EOH 切换为&lt;&lt;~EOH 时,括号正确识别代码并且代码高亮工作正常。

括号或&lt;&lt;-EOH 上的错误是错误的吗?

bash 'run_a_command_block' do
  code <<-EOH
    /usr/bin/python /usr/local/bin/a_regular_script.py
  EOH
  action :nothing
end

【问题讨论】:

  • rubyguides.com/2018/11/ruby-heredoc 和许多其他人。网络是你的朋友。
  • There is plenty of information about ruby syntax on the internet。不过,您实际上抱怨的似乎是您的Brackets 版本中的语法突出显示问题。你运行的是最新版本吗? (如果没有,请更新它。那解决了吗?)有没有人报告过这个问题? (如果没有,您可以自己报告。)
  • 如果您能解释一下关于 Ruby 中的 heredocs 的文档,准确地说对您来说不清楚,那将会很有帮助。这具有三个优点: 1) 这样,Ruby 开发人员可以改进文档,以便未来的开发人员不会陷入与您相同的陷阱。让世界变得更美好! 2)它告诉您对文档做了什么和不理解什么,这样我们就不会浪费时间在我们的答案中重复您已经知道或您不理解的事情。 3)这表明你已经做了深入的研究,试图自己回答这个问题。
  • 如果&lt;&lt;~EOH 正确突出显示,而&lt;&lt;-EOH 未正确突出显示,那么您的编辑器就是罪魁祸首。 “波浪形”heredoc 是在“straight”之后引入的。理解新变体的 Ruby 版本将理解旧变体。

标签: ruby chef-infra heredoc adobe-brackets


【解决方案1】:

波浪形的heredoc会将内容取消缩进到缩进最少的行的级别:

straight = <<-END_OF_TEXT
      Hello.

    This is:
      a regular dash.
END_OF_TEXT

squiggly = <<~END_OF_TEXT
      Hello.

    This is:
      using the squiggly dash.
END_OF_TEXT

separator = "-" * 30

puts separator
puts straight
puts separator
puts squiggly
puts separator

这个输出:

------------------------------
      Hello.

    This is:
      a regular dash.
------------------------------
  Hello.

This is:
  using the squiggly dash.
------------------------------

【讨论】:

    【解决方案2】:

    我刚刚找到了答案。他们做不同的事情。直线保持多行字符串的结构(换行),而波浪形连接每一行,因为它们是单行。

    请参考: https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc#disqus_thread

    我会检查我是否有最新的括号版本。如果是,我按照建议打开一张票。

    谢谢大家。

    【讨论】:

    • 这不正确。修饰符改变缩进。当使用 squiggy &lt;&lt;~END_OF_TEXT 时,内容不会缩进到缩进最少的行的深度,意思是。
    • 行不会像您在此处所说的那样连接到单行。
    猜你喜欢
    • 2016-08-03
    • 2013-12-02
    • 2012-06-13
    • 2010-09-06
    • 2010-11-17
    • 1970-01-01
    • 2010-12-16
    • 2013-06-10
    • 2011-05-17
    相关资源
    最近更新 更多