如果满足IF条件,则在开始时启动循环(Ruby)

时间:2013-08-13 13:58:58

标签: ruby arrays loops conditional

使用ruby 1.9.3,我需要执行以下操作:

test_ids.each do |x|
    if x == 1
        y = x+1
    elsif x == 2
        y = x+2
    elsif x == 3
        (end loop here, start over with next test_id)
    else
        y = x+4
    end
end

如果满足条件而不是在整个脚本中继续,我只需要循环继续数组中的下一个对象。这怎么可能?

编辑:

最终目标是这样的:

case x
    when 1
        abort
    when 2
        ...
    else
        ...
end

puts x+2

正如您所看到的,{case}语句之后正在使用x。如果puts,我不需要运行x = 1语句。我不想abort脚本并完全终止它,我只想跳过那个数组对象并转到下一个。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

=x分配一个值,因此您的代码只在循环内执行x = 1

相反,您需要在==语句中使用if进行比较。

您可以使用case声明避免这种情况:

case x
when 1
  ...
when 2
  ...
when 3
  ...
else
  ...
end

根据我使用case的经验,与多个if/else/elsif相比,往往会澄清代码。

答案 1 :(得分:0)

您正在寻找next命令。

test_ids.each do |x|
  if x == 1
    y = x+1
  elsif x == 2
    y = x+2
  elsif x == 3
    next
  else
    y = x+4
  end
end