Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
case "Hello" when /Hell/ puts "Есть соответствие." else puts "Нет соответствия."endделает не то же самое, что фрагмент
case /Hell/ when "Hello" puts "Есть соответствие." else puts "Нет соответствия."endЕсли это вас смущает, просто постарайтесь запомнить. А если не смущает, тем лучше!
• Программисты, привыкшие к С, могут быть озадачены отсутствием предложений
breakcasebreakwhencase• Значения в каждой ветви
case• В ветвях
casecase x when 0 when 1..5 puts "Вторая ветвь" when 5..10 puts "Третья ветвь" else puts "Четвертая ветвь"endЕсли x принимает значение 0, ничего не делается. Для значения 5 печатается строка «Вторая ветвь» — несмотря на то что 5 удовлетворяет и условию в третьей ветви.
• Перекрытие ветвей допускается потому, что они вычисляются в строгом порядке и выполняется закорачивание. Иными словами, если вычисление выражения в какой-то ветви оказалось успешным, то следующие ветви не вычисляются. Поэтому не стоит помещать в ветви
casecase x when 1..10 puts "Первая ветвь" when foobar() # Возможен побочный эффект? puts "Вторая ветвь" when 5/0 # Деление на нуль! puts "Третья ветвь" else puts "Четвертая ветвь"endЕсли x находится в диапазоне от 1 до 10, то метод
foobar()1.5.4. Рубизмы и идиомы
Материал в этом разделе во многом пересекается с изложенным выше. Но не задумывайтесь особо, почему мы решили разбить его именно таким образом. Просто многие вещи трудно точно классифицировать и организовать единственно правильным образом. Мы ставили себе задачу представить информацию в удобном для усвоения виде.
Ruby проектировался как непротиворечивый и ортогональный язык. Но вместе с тем это сложный язык, в котором есть свои идиомы и странности. Некоторые из них мы обсудим ниже.
• С помощью ключевого слова
alias• Пронумерованные глобальные переменные
$1$2$3• Мы не рекомендуем использовать «специальные переменные»
$=$_$/• Не путайте операторы диапазона
.....5..105...10• С диапазонами связана одна мелкая деталь, которая может вызвать путаницу. Если дан диапазон
m..nendnlastnm...nnend_excluded?• Не путайте диапазоны с массивами. Следующие два присваивания абсолютно различны:
x = 1..5x = [1, 2, 3, 4, 5]Однако есть удобный метод
to_a• Часто бывает необходимо присвоить переменной значение лишь в том случае, когда у нее еще нет никакого значения. Поскольку «неприсвоенная» переменная имеет значение
nilx = x || 5x ||= 5falsenil• В большинстве языков для обмена значений двух переменных нужна дополнительная временная переменная. В Ruby наличие механизма множественного присваивания делает ее излишней: выражение
x, y = y, xxy• Четко отличайте класс от экземпляра. Например, у переменной класса
@@foobar@foobar
