在PHP中,以下代码可以让我创建一个字符串而无需转义引号:
在Ruby/Rails中是否有类似的东西?
$string = <<<EOD
',. whatever <"",'
EOD;
echo $string;
在Ruby/Rails中是否有类似的东西?
$string = <<<EOD
',. whatever <"",'
EOD;
echo $string;
Ruby的heredocs基本相同,有些细微变化,并且有两种不同的形式:
1)heredoc结尾必须在行首:
string = <<EOD
',. whatever <"",'
EOD
puts string
2) heredoc结束符可能前面有空格:
string = <<-EOD
',. whatever <"",'
EOD
puts string
这被称为 here doc。
从链接中可以看到,Ruby 的写法应该是: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
Ruby通过提供两种here doc语法来支持多行字符串。第一种语法使用额外的破折号,并允许您缩进“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语法不需要使用破折号,但是它要求"here doc的结束符"在第一列(或者没有前导空格)。
<<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
这被称为heredoc,在Ruby中用<<WHATEVER
表示。
你可以像这样做
string = <<EOD
',. whatever <"",'
EOD
puts string
output = <<-TEXT
my text
block
TEXT
^他们说的话