Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Метод
to_f
temp
Предложение
case
С
F
Кстати, предложение
case
В самом вычислении нет ничего интересного. Но обратите внимание, что переменные с и
f
case
case
elif
Мы воспользовались этим фактом, чтобы понять, какая ветвь исполнялась, и в зависимости от этого вывести то или другое сообщение. Сравнение
f
nil
case
Внимательный читатель заметит, что мы пользовались только «локальными» переменными. Это может показаться странным, так как, на первый взгляд, их областью видимости является вся программа. На самом деле они локальны относительно верхнего уровня программы. Глобальными они кажутся лишь потому, что в этой простой программе нет контекстов более низкого уровня. Но если бы мы объявили какие-нибудь классы или методы, то в них переменные верхнего уровня были бы не видны.
1.2.6. Циклы и ветвление
Потратим немного времени на изучение управляющих конструкций. Мы уже видели простое предложение
if
if
unless
else
if
unless
Таблица 1.1. Условные предложения
Формы с if | Формы с unless |
---|---|
if x < 5 then statement1 end | unless x >= 5 then statement1 end |
if x < 5 then statement1 else statement2 end | unless x < 5 then statement2 else statement1 end |
statement1 if y == 3 | statement1 unless y != 3 |
x = if a>0 then b else c end | x = unless a<=0 then с else b end |
Здесь формы с ключевыми словами
if
unless
then
else
Предложение
case
case
===
case "Это строка символов."
when "одно значение"
puts "Ветвь 1"
when "другое значение"
puts "Ветвь 2"
when /симв/
puts "Ветвь 3"
else
puts "Ветвь 4"
end
Этот код напечатает
Ветвь 3
"одно значение"
"другое значение"
print
else
Если проверяемое выражение — целое число, то его можно сравнивать с целочисленным диапазоном (например,
3..8
В Ruby имеется богатый набор циклических конструкций. К примеру,
while
until
if
unless
Kernel
loop
В примерах из таблицы 1.2 предполагается, что где-то определен такой массив
list
list = %w[alpha bravo charlie delta echo];
В цикле этот массив обходится и печатается каждый его элемент.
Таблица 1.2. Циклы
# Цикл 1 (while) | # Цикл 2 (until) |
---|---|
i=0 while i < list.size do print "#{list[i]} " i += 1 end | i=0 until i == list.size do print "#{list[i]} " i += 1 end |
# Цикл 3 (for) | # Цикл 4 (итератор 'each') |
for x in list do print "#{x} " end | list.each do |x| print "#{x} " end |
# Цикл 5 (метод 'loop') | # Цикл 6 (метод 'loop') |
i = 0 n=list.size-1 loop do print "#{list[i]} " i += 1 break if i > n end | i=0 n=list.size-1 loop do print "#{list[i]} " i += 1 break unless i <= n end |
# Цикл 7 (итератор 'times') | # Цикл 8 (итератор 'upto') |
n=list.size n.times do |i| print "#{list[i]} " end | n=list.size-1 0.upto(n) do |i| print "#{list[i]} " end |
# Цикл 9 (for) | # Цикл 10 ('each_index') |
n=list.size-1 for i in 0..n do print "#{list[i]} " end | list.each_index do |x| print "#{list[x]} " end |