У меня есть необходимость использовать стековую структуру данных для программы, которую я пишу, и я знаю, что Ruby не имеет явной структуры данных Stack, но что у класса Array есть все свойства, которые делаютa Stack: push
, pop
, size
, clear
, isEmpty
, inspect
, to_s
.
При поиске в Интернете я нашел различные посты, использующие этот синтаксис для извлечения функцийкласса Array в подкласс:
Stack = Array.extract([
:push,
:pop,
:size,
:clear,
:inspect,
:to_s
])
s = Stack.new
s.push 1
s.push 2
s.push 3
s # => [1, 2, 3]
s.pop # => 3
s # => [1, 2]
Я хотел бы сделать что-то похожее на это, так что мой подкласс Array ограничен в том, что вызовы он может сделать, но кажется, что метод extract больше не являетсяв API класса Array.
Вопросы:
- Эта функция была удалена по какой-то причине, в чем же причина такого ущерба?
- Как добиться функциональности, аналогичной этой, с помощью Ruby 1.90,3?Прямо сейчас я просто делегирую необходимые вызовы классу Array, но все другие методы в классе Array все еще могут вызываться в моем объекте Stack, что я не хочу разрешать.