9.2.1. Более строгая реализация стека

9.2.1. Более строгая реализация стека

Мы обещали показать, как можно сделать стек защищенным от некорректного доступа. Выполняем обещание! Вот пример простого класса, который хранит внутри себя массив и управляет доступом к этому массиву. (Есть и другие способы, например делегирование, но описанная реализация проста и прекрасно работает.)

class Stack

 def initialize

  @store = []

 end

 def push(x)

  @store.push x

 end

 def pop

  @store.pop

 end

 def peek

  @store.last

 end

 def empty?

  @store.empty?

 end

end

Мы добавили одну операцию, которая для массивов не определена; метод peek возвращает элемент, находящийся на вершине стека, не выталкивая его.

Нижеследующие примеры подтверждают адекватность такого определения класса.

Данный текст является ознакомительным фрагментом.