Выбрать главу

Таблица 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