1.5.5. Ориентация на выражения и прочие вопросы
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, и в этом случае точка (.) будет сопоставляться с символом новой строки.
• Регулярные выражения. Опасайтесь соответствий нулевой длины. Если все элементы регулярного выражения необязательны, то такому образцу будет соответствовать «ничто», причем соответствие всегда будет найдено в начале строки. Это типичная ошибка, особенно часто ее допускают новички.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Горизонтальная или вертикальная ориентация
Горизонтальная или вертикальная ориентация Эти понятия легко спутать (юнит можно считать как вертикальным, так и горизонтальным элементом страницы, в зависимости от направления взгляда), поэтому в этой книге речь пойдет о колоночной сетке (о разбиении страницы по
5.1. Местоположение и ориентация
5.1. Местоположение и ориентация Обычно мы представляем себе, что наше движение происходит в неподвижном пространстве: когда мы поворачиваемся, мир не вращается вместе с нами, когда мы продвигаемся вперед, мир не отступает. Сидя за письменным столом, я считаю, что видимая
Прочие параметры
Прочие параметры По остальным пунктам секции Параметры я позволю себе пробежаться галопом — они или не очень существенны (с моей точки зрения), или тривиальны. Неохваченными у нас остались (слева направо и сверху вниз):Дата и время, смысл которого очевиден:Приложения и
21.1.2 Ориентация на Unix
21.1.2 Ориентация на Unix Исходный вариант интерфейса socket был разработан для Unix. Архитектура этой операционной системы позволяет единообразно обращаться к файлам, терминалам и вводу/выводу. Операции с файлами предполагают использование одного из следующих вызовов:descriptor =
6.2. Ориентация экрана
6.2. Ориентация экрана Возможность изменять ориентацию изображения используется уже достаточно давно, с того времени, как появились ЖК-мониторы, которые можно было поворачивать на 90°. Подобный подход позволяет увеличить количество выводимой информации и просматривать
Ориентация
Ориентация В некоторых группах ключевых процессов имеются ключевые практики, описывающие ориентацию. Термин «ориентация» широко используется для обозначения передачи знания или навыка более низкого уровня по сравнению с обучением. Ориентация является обзором или,
Ориентация бумаги
Ориентация бумаги Иногда бывает удобно распечатать документ, изменив ориентацию бумаги с книжной на альбомную. Например, когда в документе есть широкие таблицы или графические элементы, которые лучше разместить в ряд. Альбомная ориентация подходит также для вывода на
ТЕХНОЛОГИИ: Ориентация на язык
ТЕХНОЛОГИИ: Ориентация на язык Автор: Дмитрий КирилловОдну из самых актуальных, наболевших и, не побоюсь этого слова, фундаментальных проблем разработки можно кратко назвать так: «проект программы не равен ее исходному коду». Впечатляющий набор современных инструментов
Нужен ли человеку третий глаз (и прочие неприятные вопросы касательно Очков Google) Евгений Золотов
Нужен ли человеку третий глаз (и прочие неприятные вопросы касательно Очков Google) Евгений Золотов Опубликовано 08 мая 2013 Прошло две недели с начала раздачи тестовой модели очков Google Glass простым пользователям. Уже сейчас круг счастливчиков
Объектная ориентация
Объектная ориентация Перед исследованием ориентированности системы SAP R/3 на процессы необходимо кратко осветить смысл такой ориентации. Объектно-ориентированная парадигма основывается на новом взгляде на традиционное противопоставление данных и вычислительных
Часть V Прочие вопросы создания книг в формате FictionBook
Часть V Прочие вопросы создания книг в формате FictionBook § 5.1 Советы по оформлению книг Совет номер один. Не стоит стремиться воспроизвести все полиграфические изыски печатного оригинала.В понятие «изыски» входит, например, выделение заголовков жирным или курсивным
Ориентация в пространстве
Ориентация в пространстве Итак, поиски связки ключей и забытые фамилии вы можете спокойно отнести к разряду нормальных явлений: никаких причин для беспокойства, и в первую очередь никаких оснований предполагать начинающуюся деменцию. Но как обстоит дело с умением