假设我创建了一个通过操作数组中的元素来工作的Calculator类 – 在这个类中我定义了几个方法:add,subtract,multiply,divide.如果数组中只有1个或更少的元素,我希望每个方法都引发相同的错误,例如:
class Calculator # ... def add if @array.length < 2 raise 'Not Enough Elements' else @array << @array.pop + @array.pop end end # ... end
我可以编写一个条件来将错误提升到每个方法中,但这似乎非常繁琐且不是Ruby.是否有办法将引发的错误应用于所有需要它的方法,以节省所有输入?
解决方法
其中一个选项是将长度检查逻辑移动到它自己的方法中并在需要时使用它:
class Calculator def add check_array_length # rest of the method end private def check_array_length raise 'Not Enough Elements' if @array.length < 2 end end
如果你在initialize方法中设置@array,你可以在早期阶段加注,说由于@array中的元素太少而无法继续:
class Calculator def initialize(array) raise 'Not Enough Elements' if array.length < 2 @array = array end end