Ruby – 如何在不多次写入的情况下为多个方法引发相同的错误?

假设我创建了一个通过操作数组中的元素来工作的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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...