【发布时间】:2011-03-18 15:04:26
【问题描述】:
在 PHP 中,以下内容将允许我创建一个字符串而无需转义引号..
$string = <<<EOD
',. whatever <"",'
EOD;
echo $string;
在 Ruby/Rails 中有没有类似的东西?
【问题讨论】:
标签: php ruby-on-rails ruby string
在 PHP 中,以下内容将允许我创建一个字符串而无需转义引号..
$string = <<<EOD
',. whatever <"",'
EOD;
echo $string;
在 Ruby/Rails 中有没有类似的东西?
【问题讨论】:
标签: php ruby-on-rails ruby string
Ruby heredocs 几乎相同,只是略有不同,它们有 2 种风格:
1) End-of-heredoc 必须在一行的开头:
string = <<EOD
',. whatever <"",'
EOD
puts string
2) end-of-heredoc 前面可以有空格:
string = <<-EOD
',. whatever <"",'
EOD
puts string
【讨论】:
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
【讨论】:
这称为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
【讨论】:
它被称为heredoc,在Ruby 中是<<WHATEVER。
【讨论】:
你可以这样做
string = <<EOD
',. whatever <"",'
EOD
puts string
【讨论】:
output = <<-TEXT
my text
block
TEXT
^他们怎么说
【讨论】: