Программирование на языке Ruby
Шрифт:
Наверное, это самая трудная тема для программиста, приступающего к изучению Ruby. В данном разделе мы вкратце рассмотрим некоторые следствия, вытекающие из динамической природы языка.
1.4.1. Кодирование во время выполнения
Мы уже упоминали директивы
Код можно строить и интерпретировать по частям. В качестве несколько искусственного примера рассмотрим приведенный ниже метод
Вот та же идея, доведенная чуть ли не до абсурда: программа запрашивает у пользователя имя метода и одну строку кода. Затем этот метод определяется и вызывается:
Зачастую необходимо написать программу, которая могла бы работать на разных платформах или при разных условиях, но при этом сохранить общий набор исходных текстов. Для этого в языке С применяются директивы
Конечно, за такое кодирование приходится расплачиваться некоторым снижением производительности, поскольку иногда условие вычисляется много раз. Но рассмотрим следующий пример, который делает практически то же самое, однако весь платформенно-зависимый код помещен в один метод, имя которого от платформы не зависит:
Таким способом мы достигаем желаемого результата, но условие вычисляется только один раз. Когда программа вызовет метод
1.4.2. Отражение
В языках Smalltalk, LISP и Java реализована (с разной степенью полноты) идея рефлексивного программирования — активная среда может опрашивать структуру объектов и расширять либо модифицировать их во время выполнения.
В языке Ruby имеется развитая поддержка отражения, но все же он не заходит так далеко, как Smalltalk, где даже управляющие конструкции являются объектами. В Ruby управляющие конструкции и блоки не представляют собой объекты. (Объект
Для определения того, используется ли идентификатор с данным именем, служит ключевое слово
Аналогично метод
В Ruby запрос информации о типе во время выполнения поддерживается очень полно. Тип или класс объекта можно определить, воспользовавшись методом
Можно получить полный список всех методов, которые можно вызвать для данного объекта. Для этого предназначен метод
Царица амазонок
The Big Book
Проза:
современная проза
рейтинг книги
Золото Вильгельма (сборник)
Проза:
современная проза
рейтинг книги
И в аду есть герои
5. Тайный Город
Фантастика:
боевая фантастика
рейтинг книги
"Фантастика 2025-58". Компиляция. Книги 1-21
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
рейтинг книги
Мифы Ктулху
6. Некрономикон. Миры Говарда Лавкрафта
Фантастика:
ужасы и мистика
рейтинг книги
Мир смерти
Шедевры фантастики
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги
Газлайтер. Том 5
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Туманы Авалона
Шедевры фантастики
Фантастика:
фэнтези
альтернативная история
рейтинг книги