首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Here-带有if then else语句的文档

Here-带有if then else语句的文档
EN

Stack Overflow用户
提问于 2010-11-18 08:34:20
回答 3查看 852关注 0票数 1

就像标题说的那样。可以在ruby的here-doc中使用if/then语句吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-18 11:49:54

比较(对比)这些样本。哪个可读性更好,逻辑更清晰,您是否希望支持:

示例#1:

代码语言:javascript
复制
string = <<END_STRING
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
#{
if (true_or_false)
  'jackdaws love my giant sphinx of quartz'
else
  'Sphinx of black quartz, judge my vow.'
end
}
proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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.
END_STRING

示例#2:

代码语言:javascript
复制
string = <<END_STRING
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
#{
(true_or_false) \
  ?  'jackdaws love my giant sphinx of quartz' \
  : 'Sphinx of black quartz, judge my vow.'
}
proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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.
END_STRING

示例#3:

代码语言:javascript
复制
string = <<END_STRING
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
#{(true_or_false) ? 'jackdaws love my giant sphinx of quartz' : 'Sphinx of black quartz, judge my vow.'}
proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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.
END_STRING

示例#4:

代码语言:javascript
复制
insert_string = (true_or_false) \
  ? 'jackdaws love my giant sphinx of quartz' \
  : 'Sphinx of black quartz, judge my vow.'

string = <<END_STRING
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
${ insert_string }
proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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.
END_STRING

就我个人而言,我更喜欢#4,因为它将逻辑从字符串的定义中分离出来,有助于更容易地看到发生了什么,但您的里程可能会有所不同。

票数 1
EN

Stack Overflow用户

发布于 2010-11-18 08:43:16

代码语言:javascript
复制
irb(main):001:0> x = <<-E
irb(main):002:0" How
irb(main):003:0" now
irb(main):004:0" #{
irb(main):005:0"   if true
irb(main):006:0"     "brown"
irb(main):007:0"   else
irb(main):008:0"     "red"
irb(main):009:0"   end
irb(main):010:0" } cow
irb(main):011:0" E
=> "How\nnow\nbrown cow\n"
irb(main):012:0> puts x
How
now
brown cow
票数 3
EN

Stack Overflow用户

发布于 2010-11-18 08:46:14

heredoc文档就像一个字符串。因此,如果您的字符串允许变量求值和替换(不使用引号或双引号),您可以这样做:

代码语言:javascript
复制
switcheroo=true
mydoc = <<HDOC
This string will always appear
#{"This will only appear if switcheroo is true" if switcheroo} 
HDOC

你必须把你的条件放在括号里,这是标准的字符串求值技术。

还请注意,如果您的heredoc的引用使用单引号,这将不起作用,这意味着它是一个文字字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4210593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档