Книга: Программирование на языке Ruby
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
возвращает элемент, находящийся на вершине стека, не выталкивая его.
Нижеследующие примеры подтверждают адекватность такого определения класса.
Похожие страницы
- Глава 10. Реализация распознавания жестов
- 9.2.4. Более строгая реализация очереди
- ГЛАВА 2 БОЛЕЕ ДЕТАЛЬНОЕ ОПИСАНИЕ
- Реализация генерируемого содержимого
- Ключевые слова C#, предназначенные для более сложных конструкций
- 11.3.9. Просмотр стека вызовов
- Реализация TCP
- Более сложные эффекты
- 9.4.1. Реализация графа в виде матрицы смежности
- Реализация языка SQL
- 9.2 Реализация массива ftAID на платформе Windows NT
- Favicon – делаем сайт более заметным для пользователей