Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
• В Ruby нет произвольных блоков, то есть нельзя начать блок в любом месте, как в С. Блоки разрешены только там, где они нужны, — например, могут присоединяться к итератору. Исключение составляет блок
begin-end• Не забывайте, что ключевые слова
BEGINENDbeginend• При статической конкатенации строк приоритет конкатенации ниже, чем у вызова метода. Например:
str = "Первая " 'second'.center(20) # Примеры 1 and 2str = "Вторая " + 'second'.center(20) # дают одно и то же.str = "Первая вторая".center(20) # Примеры 3 and 4str = ("Первая " + 'вторая').center(20) # дают одно и то же.• В Ruby есть несколько псевдопеременных, которые выглядят как локальные переменные, но применяются для особых целей. Это
selfniltruefalse__FILE____LINE__1.5.2. Перспективы программирования
Наверное, каждый, кто знает Ruby (сегодня), в прошлом изучал или пользовался другими языками. Это, с одной стороны, облегчает изучение Ruby, так как многие средства похожи на аналогичные средства в других языках. С другой стороны, у программиста может возникнуть ложное чувство уверенности при взгляде на знакомые конструкции Ruby. Он может прийти к неверным выводам, основанным на прошлом опыте; можно назвать это явление «багажом эксперта».
Немало специалистов переходит на Ruby со Smalltalk, Perl, C/C++ и других языков. Ожидания этих людей сильно различаются, но так или иначе присутствуют. Поэтому рассмотрим некоторые вещи, на которых многие спотыкаются.
• Символ в Ruby представляется целым числом. Это не самостоятельный тип, как в Pascal, и не эквивалент строки длиной 1. В ближайшем будущем положение изменится и символьная константа станет строкой, но на момент написания данной книги этого еще не произошло. Рассмотрим следующий фрагмент:
x = "Hello"y = ?Аputs "x[0] = #{x[0]}" # Печатается x[0] = 72puts "y = #{y}" # Печатается y = 65if y == "А" # Печатается no puts "yes"else puts "no"end• He существует булевского типа.
TrueClassFalseClasstruefalse• Многие операторы в Ruby напоминают операторы в языке С. Два заметных исключения — операторы инкремента и декремента (
++--• Известно, что в разных языках оператор деления по модулю работает по-разному для отрицательных чисел. Не вдаваясь в споры о том, что правильно, проиллюстрируем поведение в Ruby:
puts (5 % 3) # Печатается 2puts (-5 % 3) # Печатается 1puts (5 % -3) # Печатается -1puts (-5 % -3) # Печатается -2• Некоторые привыкли думать, что «ложь» можно представлять нулем, пустой строкой, нулевым символом и т.п. Но в Ruby все это равно «истине». На самом деле истиной будет все кроме объектов
falsenil• В Ruby переменные не принадлежат никакому классу: класс есть только у значений.
• Переменные в Ruby не объявляются, однако считается хорошим тоном присваивать переменной начальное значение
nil•
ARGV[0]argv[0]• Большинство операторов в Ruby на самом деле является методами; их запись в виде «знаков препинания» — не более чем удобство. Первое исключение из этого правила — набор операторов составного присваивания (
+=-==.....!not&&and||or!=!~• Как и в большинстве современных языков программирования (хотя и не во всех), булевские операции закорачиваются, то есть вычисление булевского выражения заканчивается, как только его значение истинности становится известным. В последовательности операций
ortrueandfalse• Префикс
@@•
loopKernel• Кому-то синтаксис
unless-elseunlessifelse• Простой тип
Fixnumtruefalsenil• Не путайте операторы
&&||&|
