从不同方法的循环返回

时间:2017-03-08 02:47:42

标签: ruby

我的理解是你可以退出程序退出。你如何从循环中返回?当我按照以下方式运行return_method时,我想退出返回"RETURNING"的循环。

def return_method
   return "RETURNING"
end

loop do
  puts "Enter:"
  answer = gets.chomp
  if answer == 'run'
    return_method
  end
  break if answer == 'y'
end

break在我的方法中不起作用。

2 个答案:

答案 0 :(得分:1)

从嵌套方法调用中逃脱嵌套循环的典型方法是使用catch ... throw

RETURNING = "RETURNING"

def return_method
  throw RETURNING
end

catch(RETURNING) do
  loop do
    puts "Enter:"
    answer = gets.chomp
    if answer == 'run'
      return_method
    end
    break if answer == 'y'
  end
end

答案 1 :(得分:0)

通常情况下,方法调用不会强制调用方法执行像return那样突然的操作。这就是例外情况,如果没有被抓住它们会冒泡,但对于这种事情来说,这是非常严厉的。相反,如果你想打破循环,你的方法会返回一个真值:

def return_method
   puts "RETURNING"

   true
end

loop do
  puts "Enter:"
  answer = gets.chomp

  case (answer)
  when 'run'
    break if return_method
  when 'y'
    break
  end
end