Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
• Операторы
andor&&||а = trueb = falseс = trued = truea1 = a && b or с && d # Операции && выполняются первыми.a2 = a && (b or с) && d # Операция or выполняется первой.puts a1 # Печатается falseputs a2 # Печатается true• He забывайте, что «оператор» присваивания имеет более высокий приоритет, чем операторы
andor!+=-=x = y or z(x=у) or zx = (y or z)y = falsez = truex = y or z # Оператор = выполняется РАНЬШЕ or!puts x # Печатается false(x = y) or z # Строка 5: то же, что и выше.puts x # Печатается falsex = (y or z) # Оператор or вычисляется сначала.puts x # Печатается true• Не путайте атрибуты объектов с локальными переменными. Если вы привыкли к C++ или Java, можете забыть об этом! Переменная
@my_varmy_var• Во многих языках, и в Ruby в том числе, есть цикл
forforfor var in 1..10 puts "var = #{var}" if var > 5 var = var + 2 endend• Имена переменных не всегда легко «на глаз» отличить от имен методов. Как решает этот вопрос анализатор? Правило такое: если анализатор видит, что идентификатору присваивается значение до его использования, то он считается переменной; в противном случае это имя метода. (Отметим, что операция присваивания может и не выполняться: достаточно того, что интерпретатор ее видел.)
1.5.3. Предложение case в Ruby
Во всех современных языках есть та или иная форма многопутевого ветвления. В C/C++ и Java это предложение
switchcaseПредложение
casecaseВыше мы уже рассматривали синтаксис этого предложения, а теперь сосредоточимся на его семантике.
• Для начала рассмотрим тривиальный пример. Выражение
expressionvaluecase expression when value некоторое действиеendВ Ruby для этой цели есть специальный оператор
===• Предыдущее предложение можно записать и так:
if value === expression некоторое действиеend• Не путайте оператор отношения с оператором проверки на равенство (
==• Не думайте, что проверяемое выражение — это объект, которому сравниваемое значение передается в качестве параметра. На самом деле как раз наоборот (мы это только что видели).
• Это подводит нас к наблюдению, что
x===yy===xcase value when expression некоторое действиеend• В качестве примера рассмотрим строку
strpatВыражение
str =~ pat=~Regexppat =~ strpat === str===Regexpstr === pat
