你能在here-doc中放一个条件语句吗?
即:
sky = 1
str = <<EOF
The sky is #{if sky == 1 then blue else green end}
EOF谢谢
发布于 2010-12-03 13:38:39
可以,停那儿吧。(你试过了吗?)HEREDOC就像你声明的那样,就像一个带双引号的字符串。如果你碰巧想要相反的结果,你可以像这样单引号引用你的HEREDOC指标:
str = <<EOF
#{ "this is interpolated Ruby code" }
EOF
str = <<'EOF'
#{ This is literal text }
EOF示例中的“绿色”和“蓝色”是错误的,除非您有具有这些名称的方法或局部变量。你可能想要其中之一:
str = <<EOF
The sky is #{if sky==1 then 'blue' else 'green' end}
EOF...or terser版本:
str = <<EOF
The sky is #{sky==1 ? :blue : :green}
end与所有字符串插值一样,每个表达式的结果都会调用#to_s。由于符号的字符串表示是相同的文本,因此在这样的插值中使用符号可以在键入时节省一个字符。我最常用的用法是:
cats = 13
str = "I have #{cats} cat#{:s if cats!=1}"https://stackoverflow.com/questions/4342771
复制相似问题