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