微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐