是否有等效的<<

时间:2010-07-20 19:04:12

标签: php ruby-on-rails ruby string

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

$string = <<<EOD

',. whatever <"",'

EOD;

echo $string;

Ruby / Rails中有类似的内容吗?

6 个答案:

答案 0 :(得分:11)

Ruby heredocs几乎相同,只有很小的变化,它们分为两种:

1)heredoc结尾必须在一行开头:

string = <<EOD

  ',. whatever <"",'

EOD

puts string

2)结尾的heredoc可以在空格之前:

string = <<-EOD

  ',. whatever <"",'

       EOD

puts string

答案 1 :(得分:10)

这称为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

答案 2 :(得分:10)

Ruby通过提供两种类型的doc语法来支持多行字符串。第一种语法使用和附加破折号,但允许您缩进“end of 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

此处的另一个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 :(得分:3)

它被称为heredoc,它在Ruby中是<<WHATEVER

答案 4 :(得分:2)

你可以这样做

string = <<EOD

',. whatever <"",'

EOD

puts string

答案 5 :(得分:1)

output = <<-TEXT
   my text
   block
TEXT

^他们说了什么