Ruby等价于不退出irb的abort



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

然而,abort也将用户抛出IRB。

除了abort之外,是否还有其他方法将结束或中断方法,但不会将用户踢出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

您应该使用raise而不是abort。根据设计,abort终止程序,而raise抛出一个异常,该异常被IRB的求值器捕获。

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

最新更新