ruby等效于中止不退出irb

时间:2015-08-29 14:41:22

标签: ruby

在下面的方法中,如果满足给定条件,我将使用abort提前结束操作。

但是,abort也会将用户从IRB中抛出。

除了中止之外还有别的东西会结束或破坏方法,但不会让用户退出irb。

感谢。

def contrary
  if @quantity.label  == "particular"
    abort("There is no contrary for this type of propostion. Try subcontrary")
  end
  quality = @quality.opposite

  if @truthvalue
    truthvalue = !@truthvalue
  elsif !@truthvalue
    truthvalue = "unknown"
  end

  contrary = Proposition.new(@quantity, @subject, quality, @predicate, truthvalue)
  return contrary
end

2 个答案:

答案 0 :(得分:1)

return不必是方法中的最终语句,也不必返回值(它可以返回nil)。

因此,将以下内容作为您方法的第一行应该可以实现您正在寻找的内容:

return if @quantity.label == "particular"

如果您想先输出消息:

if @quantity.label == "particular"
  puts "There is no contrary for this type of propostion. Try subcontrary"
  return
end

答案 1 :(得分:1)

您应该使用raise代替abortabort按设计终止您的程序,而raise抛出IRB评估者捕获的异常。