【发布时间】:2013-08-15 04:35:39
【问题描述】:
使用 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
如您所见,x 在 if case 语句之后使用。如果x = 1,我不需要运行puts 语句。我不想abort 脚本并完全终止它,我只想跳过该数组对象并转到下一个。有什么建议吗?
【问题讨论】:
-
我怀疑这是否符合您的预期。
=为x赋值,因此您的代码仅在循环内执行x = 1。相反,您需要使用==进行比较。 -
重要的是要了解,鉴于您拥有的代码,
next不会有什么特别之处。一旦elsif x == 3匹配并且您的代码落入该块,当它退出时它将落入并隐式执行next。唯一需要next的情况是,如果在您想要避免的end语句之后还有其他代码。不会执行其他elsif语句,也不会发生else。
标签: ruby arrays loops conditional