【问题标题】:Is there an equivalent of <<<EOD in Ruby/Rails?Ruby/Rails 中有 <<<EOD 的等价物吗?
【发布时间】:2011-03-18 15:04:26
【问题描述】:

在 PHP 中,以下内容将允许我创建一个字符串而无需转义引号..

$string = <<<EOD

',. whatever <"",'

EOD;

echo $string;

在 Ruby/Rails 中有没有类似的东西?

【问题讨论】:

    标签: php ruby-on-rails ruby string


    【解决方案1】:

    Ruby heredocs 几乎相同,只是略有不同,它们有 2 种风格:

    1) End-of-heredoc 必须在一行的开头:

    string = <<EOD
    
      ',. whatever <"",'
    
    EOD
    
    puts string
    

    2) end-of-heredoc 前面可以有空格:

    string = <<-EOD
    
      ',. whatever <"",'
    
           EOD
    
    puts string
    

    【讨论】:

      【解决方案2】:

      Ruby 通过提供两种类型的 here doc 语法来支持多行字符串。第一种语法使用和附加破折号,但允许您缩进“此处文档结尾”分隔符(示例中为“eos”)。

      <<-eos
      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
      incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
      exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
      irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
      pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
      deserunt mollit anim id est laborum.
      
      eos
      

      另一种 here doc 语法不要求您使用破折号,但它确实要求“end of here doc”定界符位于第 1 列中(或者前面没有空格)。

      <<eos
      
      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
      incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
      exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
      irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
      pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
      deserunt mollit anim id est laborum.
      eos
      

      【讨论】:

        【解决方案3】:

        这称为here doc。 从链接中,红宝石的方式是:

        puts <<-GROCERY_LIST
        Grocery list
        ------------
        1. Salad mix.
        2. Strawberries.*
        3. Cereal.
        4. Milk.*
        
        * Organic
        GROCERY_LIST
        

        结果:

        $ ruby grocery-list.rb
        Grocery list
        ------------
        1. Salad mix.
        2. Strawberries.*
        3. Cereal.
        4. Milk.*
        
        * Organic
        

        【讨论】:

          【解决方案4】:

          它被称为heredoc,在Ruby 中是&lt;&lt;WHATEVER。

          【讨论】:

            【解决方案5】:

            你可以这样做

            string = <<EOD
            
            ',. whatever <"",'
            
            EOD
            
            puts string
            

            【讨论】:

              【解决方案6】:
              output = <<-TEXT
                 my text
                 block
              TEXT
              

              ^他们怎么说

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-02-12
                • 2012-04-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-02-15
                • 1970-01-01
                相关资源
                最近更新 更多