需要禁止数组中的负索引值

dav*_*vej 4 ruby arrays

我有一个数组date_array。如果i0,我想date_array[i-1]返回nil或异常。我想我可以为此派生一个 Array 的子类,但我不知道之后该去哪里。有任何想法吗?

Ada*_*lin 5

您可以这样做,但您不需要这样做。我觉得你的处理方式是错误的,因为检查传递的索引值的责任是你的,而不是数组的。

仅举一个例子

def get_array_value (i)
  return data_array[i - 1] unless i < 0
  return nil
end
Run Code Online (Sandbox Code Playgroud)

但是,如果您坚持这样做,此解决方案可能适合您。

# arr = SpecialArray.new([1, 2, 3, 4, 5])

class SpecialArray < Array

  def [](i)
    return super(i) unless i < 0
    return nil
  end  

end
Run Code Online (Sandbox Code Playgroud)