1
你可以在一個here-doc中放置一個條件語句嗎?你可以在一個here-doc裏放一個條件語句嗎?
IE:
sky = 1
str = <<EOF
The sky is #{if sky == 1 then blue else green end}
EOF
感謝
你可以在一個here-doc中放置一個條件語句嗎?你可以在一個here-doc裏放一個條件語句嗎?
IE:
sky = 1
str = <<EOF
The sky is #{if sky == 1 then blue else green end}
EOF
感謝
是的,可以。 (你試過了嗎?)HEREDOCs宣稱你的行爲像雙引號字符串。如果你碰巧要反向,你會單引號您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
...或者更簡潔的版本:
str = <<EOF
The sky is #{sky==1 ? :blue : :green}
end
與所有串插,每個表達式的結果,呼籲它#to_s
。由於符號的字符串表示是相同的文本,因此在插入時使用符號可以在鍵入時保存一個字符。我經常使用它:
cats = 13
str = "I have #{cats} cat#{:s if cats!=1}"
真棒,完美的作品!需要類似於「我有#{貓}貓#{:如果貓!= 1}」。謝謝! – Matt 2010-12-03 05:47:28
你可以這樣做,但是看看超越技術能力去做它,並決定它是否有利於代碼可維護性是很好的。我寧願看到條件測試發生在here-doc之外,分配給一個變量,然後將這個變量嵌入到here-doc分配中。這個例子看起來像是一個細微的差別,但是有助於隨着程序的增長保持代碼更好的組織,有點像分離邏輯與Rails或其他MVC中的顯示。 – 2010-12-03 07:00:18