这个问题已添加到我的last one。
通过更改以下代码解决了我上一个问题中的问题:
<p><%= each(2,16,3){|x| x } %></p>
到
<p>
<% each(2,16,3) do |x| %>
<%= x %>
<% end %>
<p>
但我仍然不知道使用do和end标签分隔{}和3行样式的一行样式之间的区别
答案 0 :(得分:3)
第一个版本:
<p><%= each(2,16,3){|x| x } %></p>
获取整个each
方法调用的返回值并尝试输出它。第二个版本:
<p>
<% each(2,16,3) do |x| %>
<%= x %>
<% end %>
<p>
一次采用一个一个并输出它(因为您正在评估块中的输出)。不使用each
方法的实际返回值。
正如其他人所提到的,这只在你需要在块中进行某种输出/计算时才重要,每个值yield
都可以用于块;其余的只是语义。以下是相同的:
evens = (0..10).to_a.delete_if { |value| value.odd? }
和
evens = (0..10).to_a.delete_if do |value|
value.odd?
end