Предыдущая часть — часть 5: комментарии.
Содержание
Оператор if...else
Синтаксис:
if условие [then] code... [elsif условие [then] код...]... [else код...] end
Выражение if
используется для проверки истинности условия. Значения условия false
и nil
являются ложными (false), тогда как все прочие — будут True
.
Условие в if
может закрываться зарезирвированным словом then
, точкой с запятой или новой строкой.
Пример:
#!/usr/bin/ruby x=1 if x > 2 puts "x is greater than 2" elsif x <= 2 and x!=0 puts "x is 1" else puts "I can't guess the number" end if x > 2 then puts "x is greater than 2" elsif x <= 2 and x!=0 puts "x is 1" else puts "I can't guess the number" end if x > 2; puts "x is greater than 2" elsif x <= 2 and x!=0 puts "x is 1" else puts "I can't guess the number" end
Результат:
$ ./ifelse_1.rb x is 1 x is 1 x is 1
Ruby модификатор if
Синтаксис:
код if условие
Выполнит код если условие истинно.
Пример:
irb(main):007:0> d = 1 => 1 irb(main):008:0> puts "D exist" if d D exist
Оператор unless
Синтаксис:
unless условие [then] код [else код ] end
Выполняет код, если условие false
. Если условие true
— будет выполнен код из else
.
Пример:
#!/usr/bin/ruby x=1 unless x>2 puts "x is less than 2" else puts "x is greater than 2" end
Результат:
x is less than 2
Ruby модификатор unless
Синтаксис:
код unless условие
Выполняет код, если условие false
.
Пример:
#!/usr/bin/ruby $var = 1 print "1 -- Value is set\n" if $var print "2 -- Value is set\n" unless $var $var = false print "3 -- Value is set\n" unless $var
Результат:
$ ./unless.rb 1 -- Value is set 3 -- Value is set
Оператор case
Синтаксис:
case выражение [when выражение [, выражение ...] [then] код ]... [else код ] end
Сравнивает выражение, заданное в case
с выражением в when
с помощью оператора ===
, и выполняет код, если выражение в when
совпадает с выражением в case
.
Если ни одно выражение в when
не совпадает с выражением в case
— будет выполнен код из else
.
Фактически, код:
case expression0 when expression1, expression2 code1 when expression3, expression4 code2 else code3 end
будет идентичен коду:
variable = expression0 if expression1 === variable || expression2 === variable code1 elsif expression3 === variable || expression4 === variable code2 else code3 end
Пример:
#!/usr/bin/env ruby # первый аргумент будет выражением для сравнения $age = ARGV[0] # сравнение inetger значения выражения в $age с условиями в when case $age.to_i # если $age больше 0 но меньше 2 when 0 .. 2 puts "Возраст: больше 0 но меньше 2" when 3 .. 6 puts "Возраст: больше 3 но меньше 6" when 7 .. 12 puts "Возраст: больше 7 но меньше 12" when 13 .. 18 puts "Возраст: больше 13 но меньше 18" else puts "Уже взрослый" end
Результаты выполнения:
$ ./case.rb 1 Возраст: больше 0 но меньше 2 $ ./case.rb 5 Возраст: больше 3 но меньше 6 $ ./case.rb 10 Возраст: больше 7 но меньше 12 $ ./case.rb 15 Возраст: больше 13 но меньше 18 $ ./case.rb 35 Уже взрослый
Продолжение — часть 7: циклы while, for, until, break, redo и retry.