Примеры к книге "Самоучитель Ruby"
Цель книги — полное и последовательное изложение языка программирования Ruby. Книга рассчитана как на начинающих разработчиков, не владеющих ни одним языком программирования, так и на опытных программистов, желающих освоить Ruby. Ruby-разработчикам со стажем книга так же будет полезна, поскольку освещает нововведения языка, начиная с версии 2.0 до версии 2.6.
При создании книги не ставилась задача создать иллюзию, будто язык Ruby простой и не потребует усилий для его освоения. Ruby не является С-подобным и часто использует уникальные конструкции и решения, не имеющие аналогов в других живых языках программирования. Казалось бы знакомые по другим языкам конструкции, часто ведут себя в нем немного по-другому или в корне имеют иное назначение и свои особенности синтаксиса.
Книга была написана за 6 месяцев, однако подготовка к ее созданию заняла 7 лет, на протяжении которых я работал Ruby-разработчиком в компаниях Newsmedia, Rambler&Co и Mail.ru. В каждой из них вел авторские курсы, посвященные программированию баз данных, программированию на Ruby, автоматическому тестированию и веб-программированию с использованием фреймворка Ruby on Rails. Однако большая часть времени была посвящена разработке Ruby-проектов: портал Rambler.ru, телеканал Life, газета izvestia.ru.
Симдянов Игорь Вячеславович, разработчик с 20 летним стажем, ведущий разработчик группы компаний Rambler&Co, преподаватель и методист GeekBrains (Mail.ru). Автор двух десятков книг по веб-разработке и базам данных.
Купить бумажную книгу в книжных Интернет-магазинах
Раздел Issues
- Цель книги
- Как создавалась книг
- Терминология
- Исходные коды
- Задания
- Типографские соглашения
- Благодарности
- Философия Ruby
- Реализации Ruby
- Версии
- Установка Ruby
- Запуск программы на выполнение
- Задания
- Соглашения Ruby
- Комментарии
- Элементы языка
- Вывод в стандартный поток
- Как пользоваться документацией?
- Задания
- Утилиты
- Интерактивный Ruby
- Шаблонизатор
erb
- Утилита
rake
- Утилита
rdoc
- Гемы
- Задания
- Синтаксические конструкторы
- Строки. Класс
String
- Символы. Класс
Symbol
- Целые числа. Класс
Integer
- Вещественные числа. Класс
Float
- Диапазоны. Класс
Range
- Массивы. Класс
Array
- Хэши. Класс
Hash
- Логические объекты
true
иfalse
- Объект
nil
- Задания
- Типы переменных
- Присваивание
- Клонирование
- Задания
- Создание и определение констант
- Предопределенные константы
- Ключевые слова
__LINE__
и__FILE__
- Метод
require
- Метод
require_relative
- Подключение стандартных классов
- Подключение гемов
- Задания
- Операторы — это методы
- Арифметические операторы
- Присваивание
- Операторы строк
- Операторы сравнения
- Поразрядные операторы
- Оператор безопасного вызов
- Ключевое слово
defined?
- Приоритет операторов
- Задания
- Ключевое слово
if
- Логические операторы
- Ключевое слово
unless
- Условный оператор
- Ключевое слово
case
- Советы
- Задания
- Создание метод
- Параметры и аргументы
- Возвращаемое значение
- Получатель метода
- Псевдонимы методов
- Удаление метода
- Рекурсивные методы
- Предопределенные методы
- Логические методы
- bang-методы
- Задания
- Цикл
while
- Вложенные циклы
- Досрочное прекращение циклов
- Цикл
until
- Цикл
for
- Задания
- Итераторы и блоки
- Обход итераторами массивов и хэшей
- Итератор
times
- Итераторы
upto
иdownto
- Итераторы коллекций
- Итератор
tap
- Сокращенная форма итераторов
- Досрочное прекращение итерации
- Класс
Enumerator
- Задания
- Блоки в собственных методах
- Передача значений в блок
- Метод
block_given?
- Возврат значений из блока
- Итератор
yield_self
- Передача блока через парамет
- Различие
{ ... }
иdo ... end
- Блоки в рекурсивных методах
- Класс
Proc
- Методы
proc
иlambda
- Различия
proc
иlambda
- Задания
- Создание класса
- Класс — это объект
- Как проектировать классы?
- Переопределение методов
- Открытие класса
- Тело класса и его свойства
- Вложенные классы
- Константы
- Переменные класса
- Задания
- Сохранение состояния в объекте
- Установка начального состояния объекта
- Специальные методы присваивания
- Синглетон-методы
- Методы класса
- Обработка несуществующих методов
- Метод
send
- Задания
- Сложение строк и чисел
- Методы преобразования объектов
- Сложение объектов
- Сложение объекта и числа
- Сложение объекта и строки
- Сложение объекта и массива
- Перегрузка
[]
и[]=
- Перегрузка унарных операторов
+
,–
и!
- Какие операторы можно перегружать?
- DuckType-типизация
- Задания
- Ссылки на текущий объект
- Значения
self
в разных контекстах - Приемы использования
self
- Задания
- Наследование
- Логические операторы
- Динамический базовый класс
- Наследование констант
- Иерархия стандартных классов
- Переопределение методов
- Удаление методов
- Поиск метода
- Задания
- Концепция видимости
- Открытые методы
- Закрытые методы
- Защищенные методы
- Закрытый конструктор
- Паттерн «Одиночка» (Singleton)
- Вызов закрытых методов
- Информационные методы
- Области видимости при наследовании
- Области видимости методов класса
- Задания
- Создание модуля
- Оператор разрешения области видимости
- Пространство имен
- Вложенные классы и модули
- Доступ к глобальным классам и модулям
- Задания
- Класс
Module
- Подмешивание модулей в класс
- Подмешивание модулей в объект
- Синглетон-методы модуля
- Области видимости
- Стандартный модуль
Kernel
- Поиск методов в модулях
- Метод
prepend
- Методы обратного вызова
- Уточнения
- Псевдонимы методов
- Задания
- Модуль
Math
- Модуль
Singleton
- Модуль
Comparable
- Модуль
Enumerable
- Модуль
Forwardable
- Маршаллизация
- JSON-формат
- YAML-формат
- Задания
- Общие методы
- Неизменяемые объекты
- Заморозка объектов
- Небезопасные объекты
- Задания
- Модуль
Enumerable
- Заполнение массива
- Извлечение элементов
- Поиск индексов элементов
- Случайный элемент массива
- Удаление элементов
- Замена элементов
- Информация о массиве
- Преобразование массива
- Арифметические операции с массивами
- Логические методы
- Вложенные массивы
- Итераторы
- Сортировка массивов
- Задания
- Создание хэша
- Заполнение хэша
- Извлечение элементов
- Поиск ключа
- Обращение к несуществующему ключу
- Удаление элементов хэша
- Информация о хэшах
- Хэши как аргументы методов
- Объединение хэшей
- Преобразование хэшей
- Сравнение ключей
- Преобразование ключей хэша
- Задания
- Множество
Set
- Класс
Struct
- Класс
OpenStruct
- Задания
- Генерация и перехват исключений
- Исключения — это объекты
- Стандартные ошибки
- Создание собственных исключений
- Перехват исключений
- Многократная попытка выполнить код
- Перехват исключений: почти всегда плохо
- Блок
ensure
- Блок
else
- Перехват исключений в блоке
- Задания
- Класс
IO
- Создание файла
- Режимы открытия файла
- Закрытие файла
- Чтение содержимого файла
- Построчное чтение файла
- Запись в файл
- Произвольный доступ к файлу
- Пути к файлам
- Манипуляция файлами
- Задания
- Типы файлов
- Определение типа файла
- Время последнего доступа к файлу
- Права доступа вUNIX-подобной системе
- Задания
- Текущий каталог
- Создание каталога
- Чтение каталога
- Фильтрация содержимого каталога
- Рекурсивный обход каталога
- Удаление каталога
- Задания
- Как изучать регулярные выражения?
- Синтаксический конструктор
- Оператор
=~
- Методы поиска
- Синтаксис регулярных выражений
- Модификаторы
- Где использовать регулярные выражения?
- Примеры
- Задания
- Протокол HTTP
- Веб-серверы
- Гем Rack
- Ruby on Rails
- Задания
- Типы тестирования
- Преимущества и недостатки тестирования
- Фреймворки для тестирования
- Задания