Примеры к книге "Самоучитель 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
- Задания
- Типы тестирования
- Преимущества и недостатки тестирования
- Фреймворки для тестирования
- Задания
