Таблица A.12. Примеры использования операторов
Выражение | Комментарий |
a, b = b, a | Множественное (параллельное) присваивание позволяет легко обменять значения переменных |
b += c | Присваивание с операцией допустимо не только для сложения (см. таблицу A.11) и эквивалентно b = b + c |
a<=>b | –1, 0 или 1, если a меньше, равно или больше b |
c = if a < 0 | Оператор if-then-elsif-else-end может иметь много |
b = 0 | elsif частей, истинность условий в каждой из которых |
elsif a == 0 | проверяется последовательно (если условие if |
b = 1 | части не выполнено). Выражения, вычисляемые при |
else | выполнении условий, можно размещать на той же строке |
b = 2 | после then или двоеточия. Условный оператор возвращает |
end | значение последнего вычисленного выражения |
b=if 2<3:4 else 5 end | Переменная b станет равна 4 |
b=2<3 ? 4 : 5 | Тернарный оператор ?: делает то же самое |
b=-1; b=0 if b<0 | Модификатор if часто удобнее |
b=-1 unless b<0 = b 1 – = b | Оператор unless проверяет ложность условия |
b=i=0 | Оператор while, называемый циклом, в отличие от |
c = while i < 5 | условного оператора не возвращает значения. |
b += i | В результате выполнения данной программы переменная i |
i += 1 | станет равна 5, b примет значение 10 (сумма всех чисел |
end | от 0 до 4), а переменная c – значение nil |
i=1; i+=i*i while (i<9) | Модификатор while сделает переменную i равной 42 |
i=1;i+=i until(i>10) | После завершения этой программы i станет равно 16, ибо until выполняет тело цикла, пока условие ложно |
s=0 | Неявно преобразуется в s = 0 |
for i in 1..3 | (1..3).each do |i| |
s += i | s += i |
end | end |
В дополнение к этому break немедленно прекращает выполнение цикла, передавая управление на следующую за ним инструкцию; redo начинает выполнять цикл или итератор сначала, но не перевычисляет условие продолжения (для цикла) и не переходит к следующему элементу коллекции (для итератора); next прерывает выполнение текущей итерации и начинает выполнение следующей; retry начинает выполнять цикл или итератор с самого начала.
Литература и гиперссылки
[1] <http://www.ruby-lang.org/en">http://www.ruby-lang.org/en – Ruby language home page.
[2] <http://www.rubycentral.com/book">http://www.rubycentral.com/book – Гипертекстовая версия первого издания книги [3].
[3] Thomas D., Fowler C., Hunt A. Programming Ruby. The Pragmatic Programmers' Guide. Second Edition. – Dalals: The Pragmatic Bookshelf, 2004.
[4] Black D. A. Ruby for Rails. Ruby Techniques for Rails Developers. – Greenwich: Manning Publications Co., 2006.
[5] Кормен Т., Лейзерсон Ч., Ривест Р Алгоритмы. Построение и анализ. – М.: МЦНМО, 2000, 2004.
[6] <http://www.main.msiu.ru">http://www.main.msiu.ru – Информационный портал МГИУ.
[7] Роганов Е. А. Основы информатики и программирования: Учебник. – М.: МГИУ, ????.
[8] Роганов Е. А., Тихомиров Н. Б., Шелехов А. М. Математика и информатика для юристов: Учебник. – М.: МГИУ, 2005.
Предметный указатель
Θ-обозначение 11
LIFO 32
Matsumoto Yukihiro 5
Ruby
# 6
"#{expr}" 42
"string" 42
$* 47
$< 47
%Q(string) 42
%q(string) 42
%W(a b c) 43
%w(a b c) 43
’string’ 42
** 7
; 6
?: 14
в записи чисел 10, 42
в имени переменной 45
FILE 47
LINE 47
! 10
ARGF 47
ARGV 8, 47
Array 8, 42, 43
[] 8
[] = 45
compact 13
each 10
join 11
new 12
size 12
Bignum 42
break 47
DATA 47
def 11
Enumerable
all? 10
any? 10
collect 11
detect 10
each_with_index 12
find 10
find_all 10
inject 9
inject 45
map 11
reject 10
select 10
ENV 47
exit 10
false 10
Fixnum 42
% 8
/ 8
to_s 8
Float 42
for 13
Hash 42
if 10
Integer
times 45
Kernel