Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
•
attr
attr_reader
attr_writer
attr_accessor
Symbol
• Присваивание переменной, имя которой содержит оператор разрешения области видимости, недопустимо. Например,
Math::Pi = 3.2
1.5.5. Ориентация на выражения и прочие вопросы
В Ruby выражения важны почти так же, как предложения. Для программиста на С это звучит знакомо, а для программиста на Pascal — откровенная нелепость. Но Ruby ориентирован на выражения даже в большей степени, чем С.
Заодно в этом разделе мы остановимся на паре мелких вопросов, касающихся регулярных выражений; считайте это небольшим бонусом.
• В Ruby любое присваивание возвращает то же значение, которое стоит в правой части. Поэтому иногда мы можем немного сократить код, как показано ниже, но будьте осторожны, имея дело с объектами! Не забывайте, что это почти всегда ссылки.
x = y = z = 0 # Все переменные сейчас равны 0.
а = b = с = [] # Опасно! a, b и с ссылаются
# на ОДИН И ТОТ ЖЕ пустой массив.
x = 5
y = x += 2 # Сейчас x и у равны 7.
Напомним однако, что значения типа
Fixnum
• Многие управляющие конструкции возвращают значения, в частности
if
unless
case
а = 5
x = if а < 8 then 6 else 7 end # x равно 6.
y= if a<8 # y тоже равно 6;
6 # предложение if может располагаться
else # на одной строке
7 # или на нескольких.
end
# unless тоже работает; z присваивается значение 4.
z = unless x == y then 3 else 4 end
t = case a # t получает
when 0..3 # значение
"low" # medium,
when 4..6
"medium"
else
"high"
end
Здесь мы сделали такие отступы, будто
case
• Отметим, что циклы
while
until
nil
i = 0
x = while (i < 5) # x равно nil.
puts i+=1
end
• Тернарный оператор можно использовать как в предложениях, так и в выражениях. В силу синтаксических причин (или ограничений анализатора) скобки здесь обязательны:
x = 6
y = x == 5 ? 0 : 1 #y равно 1.
x == 5 ? puts("Привет") : puts("Пока") # Печатается: "Пока"
• Предложение
return
• Когда итератор вызывается с блоком, последнее выражение, вычисленное в блоке, возвращается в качестве значения блока. Если при этом в теле итератора есть предложение
x = yield
x
• Регулярные выражения. Напомним, что после регулярного выражения можно написать модификатор многострочности
/m
.
• Регулярные выражения. Опасайтесь соответствий нулевой длины. Если все элементы регулярного выражения необязательны, то такому образцу будет соответствовать «ничто», причем соответствие всегда будет найдено в начале строки. Это типичная ошибка, особенно часто ее допускают новички.
1.6. Жаргон Ruby
Заново начинать учить английский для освоения Ruby необязательно. Но нужно знать кое-какие жаргонные выражения, обычные в сообществе. Некоторые из них имеют другой смысл, чем принято в компьютерном мире. Им и посвящен настоящий раздел.
В Ruby термин «атрибут» носит неофициальный характер. Можно считать, что атрибут — это переменная экземпляра, которая раскрывается внешнему миру с помощью одного из методов семейства
attr
foo
foo=
@foo
Атрибуты в Ruby можно подразделить на методы чтения (reader) и установки (writer). Метод доступа, или акцессор (accessor), является одновременно методом чтения и установки. Это согласуется с названием метода
attr_accessor
Оператор
===
case
Оператор
<=>