在某些情况下这样的表达
...some loop
solution = n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s
puts solution if eval(solution) == 100
#=> `eval': divided by 0 (ZeroDivisionError)
如何防止这种情况,或者可能跳过循环计算并继续
在某些情况下这样的表达
...some loop
solution = n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s
puts solution if eval(solution) == 100
#=> `eval': divided by 0 (ZeroDivisionError)
如何防止这种情况,或者可能跳过循环计算并继续
如果您真的只想跳过当前的计算并向前迈进,最简单的方法是使用 begin-rescue 语句
loop do
begin
solution = n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s
puts solution if eval(solution) == 100
rescue ZeroDivisionError
# catch error
end
end
哇。我猜测:
n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s
又名:
n[0].to_s +
a[0] +
n[1].to_s +
a[1] +
n[2].to_s +
a[2] +
n[3].to_s +
a[3] +
n[4].to_s +
a[4] +
n[5].to_s
可以更好地写为:
n[0..5].map(&:to_s).zip(a[0..4]).flatten.join
或者:
n.map(&:to_s).zip(a).flatten.join