在下面的方法中,如果满足给定条件,我将使用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
答案 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
代替abort
。 abort
按设计终止您的程序,而raise
抛出IRB评估者捕获的异常。