在下面的方法中,如果满足给定条件,我将使用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