我有一个数组date_array
。如果i
是0
,我想date_array[i-1]
返回nil
或例外。我以为我可以为此派生一个Array的子类,但我不确定在那之后要去哪里。有任何想法吗?需要禁止数组中的负指数值
2
A
回答
3
你可以做到这一点,但你不应该需要。我觉得你错了,因为责任是你的,而不是Array的,来检查被传递的索引值。
仅仅是一个例子
def get_array_value (i)
return data_array[i - 1] unless i < 0
return nil
end
但是,如果你坚持,该解决方案可以为你工作。
# arr = SpecialArray.new([1, 2, 3, 4, 5])
class SpecialArray < Array
def [](i)
return super(i) unless i < 0
return nil
end
end
0
好吧,我同意亚当,这将会是理想的控制指标,而不是这样做:
class Ary < Array
def [](i)
return nil if i < 0
super
end
end
a = Ary.new([1, 2, 3])
b = Array.new([1, 2, 3])
#try access with -1 (normally would show last)
p a[-1] #=> nil
p b[-1] #=> 3
0
我想你可能被错误地做事情。这就是说:
你可以使用散列而不是数组。哈希不会重新解释hash[-1]
意思是别的。
0
您可以重写默认数组的行为。请注意,当索引超出限制时,Array #fetch
方法会引发异常。您可以将该方法包装在#[]
中。这里是一个例子
class Array
def [](index)
self.fetch(index)
end
end
现在,它应该只是工作。额外的好处是,你不需要实施任何新的东西。只需使用现有的标准实现即可。
相关问题
- 1. odeint禁止负值
- 2. 负指数值?
- 3. 需要优化计数的正负值
- 4. Perl中的数组和负指数
- 5. 禁止<f:convertNumber>中的长数字的指数值
- 6. 阻止C#中的负数?
- 7. 负指数中的Fortran
- 8. 中位数:需要数值数据
- 9. 声明指向数组的指针时是否需要括号?
- 10. 包装一个需要指针数组的函数
- 11. 需要指针声明来保存整数数组的地址
- 12. sparse_to_dense需要指数在0.7
- 13. 什么时候Angular2中的组件元数据需要指令?
- 14. 字符指针的二维数组是否需要被两个null终止?
- 15. “禁止保存需要的表更改重新创建”负面影响
- 16. CGI指数产量403(禁止)
- 17. 需要一些帮助,初始化指向成员函数的指针数组
- 18. 禁止在多维数组中添加现有值
- 19. 需要在foreach中删除数组中的重复值
- 20. 需要将数组中的值插入到html表中
- 21. 使用NumPy数组操作数的负指数
- 22. C#四舍五入负指数双值
- 23. mysql防止负数
- 24. 需要收集对象数组中的每个属性值来分隔数组
- 25. drupal更新后“需要禁止”
- 26. PHP - array_fill负指数
- 27. 在C中需要数组的帮助#
- 28. 填写“负”位置上的数组值
- 29. 函数指针数组,传递数组中定义的值
- 30. 需要帮助的分组PHP数组
是的,改变直接调用数组通过[]到一个函数(就像你上面)一样正常工作。谢谢。 – davej