Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
• Аналогично метод класса ассоциирован с тем классом, в котором определен; он не принадлежит никакому конкретному объекту и не может вызываться от имени объекта. При вызове метода класса указывается имя класса, а при вызове метода экземпляра - имя объекта.
• В публикациях, посвященных Ruby, часто для обозначения метода экземпляра применяют решеточную нотацию. Например, мы пишем
File.chmodchmodFileFile#chmod• В Ruby константы не являются истинно неизменными. Их нельзя изменять в теле методов экземпляра, но из других мест это вполне возможно.
• Ключевое слово
yieldyield• Составные операторы присваивания
+=-=x += yx = x + y++=• Из-за того, как определены составные операторы присваивания, их нельзя использовать для инициализации переменных. Если первое обращение к переменной
xx += 1• Такое поведение можно в некотором смысле обойти. Можно определить операторы для объекта
nilnilnil.+stringFixnumothernil + otherotherdef nil.+(other) otherendМы привели этот код для иллюстрации возможностей Ruby, но стоит ли поступать так на практике, оставляем на усмотрение читателя.
• Уместно будет напомнить, что
ClassObject• Некоторые операторы нельзя перегружать, потому что они встроены в сам язык, а не реализованы в виде методов. К таковым относятся
=.....andornot&&||!!= !~+=-=• Имейте в виду, что хотя оператор присваивания перегружать нельзя, тем не менее возможно написать метод экземпляра с именем
fоо=x.foo = 5• Напомним: «голый» оператор разрешения области видимости подразумевает наличие
Object::FooObjеct::Foo• Как уже говорилось,
failraise• Напомним, что определения в Ruby исполняются. Вследствие динамической природы языка можно, например, определить два метода совершенно по-разному в зависимости от значения признака, проверяемого во время выполнения.
• Напомним, что конструкция
for (for x in а)eachfor• Не забывайте, что метод, определенный на верхнем уровне, добавляется в модуль
KernelObject• Методы установки (например,
fоо=• Напомним, что ключевое слово
retry• Ключевое слово
retry• Метод объекта
initialize• Когда итератор заканчивается левой фигурной скобкой (или словом
endsquares = [1,2,3,4,5].collect do |x| x**2 end.reverse# squares теперь равно [25,16,9,4,1]• В конце программы на Ruby часто можно встретить идиому
if $0 == __FILE__Таким образом проверяется, исполняется ли файл как автономный кусок кода (
truefalse• Обычное наследование (порождение подкласса) обозначается символом
<class Dog < Animal # ...endОднако для создания синглетного класса (анонимного класса, который расширяет единственный экземпляр) применяется символ
<<
