Это было бы немного сложно, потому что массивы Ruby не являются однородными.То есть вы можете хранить различные типы объектов внутри массива.Это привело бы меня к решению, в котором мне нужно было бы сначала проверить, что все объекты в массиве имеют тип Debt
, и если это так, я могу воздействовать на массив, используя foo
.
Вы можете продолжить открывать Array
и добавить метод foo
, но, возможно, вам следует вместо этого создать FooArray
и расширить Array
.Таким образом, вы можете переопределить некоторые методы, такие как <<
и push
, чтобы гарантировать, что вы берете только Debt
s.Поскольку вы знаете, что в ваш массив можно добавить только Debt
s, вы можете без проблем вызвать foo()
.