Ruby 防止被零除

Ruby 防止被零除,ruby,divide-by-zero,Ruby,Divide By Zero,在某些情况下,这种表达方式 ...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..5].map(&:to_s).zip(a[0..4]).flatten.join
或:

n[0..5].map(&:to_s).zip(a[0..4]).flatten.join
n.map(&:to_s).zip(a).flatten.join