1

Ruby 1.8 では、次のretryように使用できます。

for i in 0..4
  puts i
  retry if i == 4
end

しかし、Ruby 1.9 ではエラーがスローされます: Invalid retry, what is the usage of retryin Ruby 1.9? http://www.ruby-doc.org = retry( _

4

3 に答える 3

6

失敗した操作を再試行するためのものです(例外をキャッチした場合)

n = 0
begin
  puts 'Trying to do something'
  raise 'oops'
rescue => ex
  puts ex
  n += 1
  retry if n < 3
end
puts "Ok, I give up"


# >> Trying to do something
# >> oops
# >> Trying to do something
# >> oops
# >> Trying to do something
# >> oops
# >> Ok, I give up
于 2013-02-19T07:00:26.047 に答える
0

Ruby 1.9 はretryinbegin rescue句のみをサポートします。

継続を使用して、古いものの動作を複製できますretry

require 'continuation'

def with_retry
  loop { callcc { |cc| def cc.retry; call; end; yield cc; return }}
end

with_retry do |cc|
  for n in 1..4
    puts n
    cc.retry if n == 4
  end
end
于 2016-12-20T22:04:45.337 に答える