Хэл Фултон - Программирование на языке Ruby

Тут можно читать онлайн Хэл Фултон - Программирование на языке Ruby - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ДМК Пресс, год 2007. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на языке Ruby
  • Автор:
  • Жанр:
  • Издательство:
    ДМК Пресс
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    5-94074-357-9
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хэл Фултон - Программирование на языке Ruby краткое содержание

Программирование на языке Ruby - описание и краткое содержание, автор Хэл Фултон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов.

Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии.

Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Программирование на языке Ruby - читать онлайн бесплатно ознакомительный отрывок

Программирование на языке Ruby - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Хэл Фултон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

• Префикс @@применяется для переменных класса (то есть ассоциированных с классом в целом, а не с отдельным экземпляром).

loop— не ключевое слово. Это метод модуля Kernel, а не управляющая конструкция.

• Кому-то синтаксис unless-elseможет показаться интуитивно неочевидным. Поскольку unless— противоположность if, то ветвь elseвыполняется, когда условие истинно.

• Простой тип Fixnumпередается как непосредственное значение и, стало быть, не может быть изменен внутри метода. То же относится к значениям true, falseи nil.

• Не путайте операторы &&и ||с операторами &и |. Те и другие используются в языке С; первые два предназначены для логических операций, последние два — для поразрядных.

• Операторы andи orимеют более низкий приоритет, чем &&и ||. Взгляните на следующий фрагмент:

а = true

b = false

с = true

d = true

a1 = a && b or с && d # Операции && выполняются первыми.

a2 = a && (b or с) && d # Операция or выполняется первой.

puts a1 # Печатается false

puts a2 # Печатается true

• He забывайте, что «оператор» присваивания имеет более высокий приоритет, чем операторы andи or!(это относится и к составным операторам присваивания: +=, -=и пр.). Например, код x = y or zвыглядит как обычное предложение присваивания, но на самом деле это обособленное выражение (эквивалент (x=у) or z). Вероятно, программист имел в виду следующее: x = (y or z).

y = false

z = true

x = y or z # Оператор = выполняется РАНЬШЕ or!

puts x # Печатается false

(x = y) or z # Строка 5: то же, что и выше.

puts x # Печатается false

x = (y or z) # Оператор or вычисляется сначала.

puts x # Печатается true

• Не путайте атрибуты объектов с локальными переменными. Если вы привыкли к C++ или Java, можете забыть об этом! Переменная @my_varв контексте класса — это переменная экземпляра (или атрибут), но my_varв том же контексте — локальная переменная.

• Во многих языках, и в Ruby в том числе, есть цикл for. Рано или поздно возникает вопрос, можно ли модифицировать индексную переменную. В некоторых языках эту управляющую переменную запрещено изменять вовсе (выводится предупреждение либо сообщение об ошибке на этапе компиляции или выполнения); в других это допустимо, хотя и приводит к изменению поведения цикла. В Ruby принят третий подход. Переменная, управляющая циклом for, считается обычной переменной, которую можно изменять в любой момент, но это изменение не оказывает влияния на поведение цикла! Цикл for присваивает этой переменной последовательные значения, что бы с ней ни происходило внутри тела цикла. Например, следующий цикл будет выполнен ровно 10 раз и напечатает значения от 1 до 10:

for var in 1..10

puts "var = #{var}"

if var > 5

var = var + 2

end

end

• Имена переменных не всегда легко «на глаз» отличить от имен методов. Как решает этот вопрос анализатор? Правило такое: если анализатор видит, что идентификатору присваивается значение до его использования, то он считается переменной; в противном случае это имя метода. (Отметим, что операция присваивания может и не выполняться: достаточно того, что интерпретатор ее видел.)

1.5.3. Предложение case в Ruby

Во всех современных языках есть та или иная форма многопутевого ветвления. В C/C++ и Java это предложение switch, а в Pascal — предложение case. Служат они одной и той же цели и функционируют примерно одинаково.

Предложение caseв Ruby похоже, но при ближайшем рассмотрении оказывается настолько уникальным, что варианты ветвления, принятые в С и в Pascal, кажутся близкими родственниками. Точного аналога предложению caseв Ruby нет ни в каком другом знакомом мне языке, поэтому оно заслуживает особого внимания.

Выше мы уже рассматривали синтаксис этого предложения, а теперь сосредоточимся на его семантике.

• Для начала рассмотрим тривиальный пример. Выражение expressionсравнивается со значением value, и, если они совпадают, выполняется некоторое действие. Ничего удивительного.

case expression

when value

некоторое действие

end

В Ruby для этой цели есть специальный оператор ===(называется оператором отношения ). Иногда его еще называют (не совсем правильно) оператором ветвящегося равенства. Неправильность в том, что он не всегда относится именно к проверке на равенство.

• Предыдущее предложение можно записать и так:

if value === expression

некоторое действие

end

• Не путайте оператор отношения с оператором проверки на равенство ( ==). Они принципиально различны, хотя во многих случаях ведут себя одинаково. Оператор отношения определен по-разному в разных классах, а для данного класса его поведение может зависеть от типа переданного операнда.

• Не думайте, что проверяемое выражение — это объект, которому сравниваемое значение передается в качестве параметра. На самом деле как раз наоборот (мы это только что видели).

• Это подводит нас к наблюдению, что x===yозначает вовсе не то же самое, что y===x! Иногда результат совпадает, но в общем случае оператор отношения не коммутативен. (Именно поэтому нам не нравится термин «оператор ветвящегося равенства» — ведь проверка на равенство всегда коммутативна.) Если перевернуть исходный пример, окажется, что следующий код ведет себя иначе:

case value

when expression

некоторое действие

end

• В качестве примера рассмотрим строку strи образец (регулярное выражение) pat, с которым эта строка успешно сопоставляется.

Выражение str =~ patистинно, как в языке Perl. Поскольку Ruby определяет противоположную семантику оператора =~в классе Regexp, можно также сказать, что выражение pat =~ strистинно. Следуя той же логике, мы обнаруживаем, что истинно и pat === str(исходя из того, как определен оператор ===в классе Regexp). Однако выражение str === patистинным не является. А значит, фрагмент

case "Hello"

when /Hell/

puts "Есть соответствие."

else

puts "Нет соответствия."

end

делает не то же самое, что фрагмент

case /Hell/

when "Hello"

puts "Есть соответствие."

else

puts "Нет соответствия."

end

Если это вас смущает, просто постарайтесь запомнить. А если не смущает, тем лучше!

• Программисты, привыкшие к С, могут быть озадачены отсутствием предложений breakв ветвях case. Такое использование breakв Ruby необязательно (и недопустимо). Связано это с тем, что «проваливание» редко бывает желательно при многопутевом ветвлении. В конце каждой ветви whenимеется неявный переход на конец предложения case. В этом отношении Ruby напоминает Pascal.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хэл Фултон читать все книги автора по порядку

Хэл Фултон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на языке Ruby отзывы


Отзывы читателей о книге Программирование на языке Ruby, автор: Хэл Фултон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x