Программирование на языке Ruby
Шрифт:
Наверное, это самая трудная тема для программиста, приступающего к изучению Ruby. В данном разделе мы вкратце рассмотрим некоторые следствия, вытекающие из динамической природы языка.
1.4.1. Кодирование во время выполнения
Мы уже упоминали директивы
Код можно строить и интерпретировать по частям. В качестве несколько искусственного примера рассмотрим приведенный ниже метод
Вот та же идея, доведенная чуть ли не до абсурда: программа запрашивает у пользователя имя метода и одну строку кода. Затем этот метод определяется и вызывается:
Зачастую необходимо написать программу, которая могла бы работать на разных платформах или при разных условиях, но при этом сохранить общий набор исходных текстов. Для этого в языке С применяются директивы
Конечно, за такое кодирование приходится расплачиваться некоторым снижением производительности, поскольку иногда условие вычисляется много раз. Но рассмотрим следующий пример, который делает практически то же самое, однако весь платформенно-зависимый код помещен в один метод, имя которого от платформы не зависит:
Таким способом мы достигаем желаемого результата, но условие вычисляется только один раз. Когда программа вызовет метод
1.4.2. Отражение
В языках Smalltalk, LISP и Java реализована (с разной степенью полноты) идея рефлексивного программирования — активная среда может опрашивать структуру объектов и расширять либо модифицировать их во время выполнения.
В языке Ruby имеется развитая поддержка отражения, но все же он не заходит так далеко, как Smalltalk, где даже управляющие конструкции являются объектами. В Ruby управляющие конструкции и блоки не представляют собой объекты. (Объект
Для определения того, используется ли идентификатор с данным именем, служит ключевое слово
Аналогично метод
В Ruby запрос информации о типе во время выполнения поддерживается очень полно. Тип или класс объекта можно определить, воспользовавшись методом
Можно получить полный список всех методов, которые можно вызвать для данного объекта. Для этого предназначен метод
Дважды одаренный. Том IV
4. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
рейтинг книги
Страж Кодекса. Книга V
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Сирота
1. Помещик
Фантастика:
альтернативная история
рейтинг книги
Шведский стол
3. Сын Петра
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Отморозок 4
4. Отморозок
Фантастика:
попаданцы
фантастика: прочее
рейтинг книги
Мусорщик
3. Наемник
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги