Рубиновые логические операторы
Логические Операторы
Стандартные логические операторы и, или, и нет, поддерживаются Ruby. Логические операторы сначала преобразуют свои операнды в логические значения, а затем выполняют соответствующее сравнение.
Логично и:
Двоичный оператор «и» возвращает логическое соединение двух своих операндов. Условие становится истинным, если оба операнда истинны. Это то же самое, что и & &, но с более низким приоритетом. Смотрите следующую презентацию:
Приведенный выше рисунок поможет вам понять концепцию ЛОГИЧЕСКОГО И ИСПОЛЬЗОВАНИЯ с аналогией кранов и воды.
В случае 1 на рисунке оба крана закрыты, поэтому вода не стекает. Что объясняет, что если оба условия ЛОЖЬ или 0, возвращаемое значение ЛОЖЬ или 0.
В случае 2 на рисунке один из кранов закрыт, даже тогда вода не стекает. Что объясняет, что даже если любое из условий ЛОЖЬ или 0, возвращаемое значение ЛОЖЬ или 0.
case-3 картины напоминает CASE -2.
В случае 4 на рисунке оба крана открыты, поэтому вода стекает вниз. Что объясняет, что если оба условия равны ИСТИНА или 1, возвращаемое значение ИСТИНА или 1.
Таким образом, мы можем сделать вывод, что тогда и только тогда, когда оба условия равны ИСТИНА или 1, операции ЛОГИЧЕСКОГО И возвращают ИСТИНА или 1.
Логический или:
Двоичный оператор «или» возвращает логическую дизъюнкцию двух своих операндов. Условие становится истинным, если оба операнда истинны. Это так же, как "||" но с более низким приоритетом. Смотрите следующую презентацию:
Приведенный выше рисунок поможет вам понять концепцию ЛОГИЧЕСКОГО ИЛИ операции по аналогии с кранами и водой.
В случае 1 на рисунке оба крана закрыты, поэтому вода не стекает. Что объясняет, что если оба условия ЛОЖЬ или 0, возвращаемое значение ЛОЖЬ или 0.
В случае 2 на рисунке один из кранов закрыт, и мы видим, что вода стекает вниз. Это объясняет, что если какое-либо из условий имеет значение ИСТИНА или 1, возвращаемое значение ИСТИНА или 1.
case-3 картины, напоминает CASE -2.
В случае 4 на рисунке оба крана открыты, поэтому вода стекает вниз. Что объясняет, что если оба условия равны ИСТИНА или 1, возвращаемое значение ИСТИНА или 1.
Таким образом, мы можем сделать вывод, что в операции ЛОГИЧЕСКОЕ ИЛИ, если какое-либо из условий является истинным, результат равен ИСТИНА или 1.
Логично нет:
Логично нет или! Оператор используется для изменения логического состояния своего операнда. Если условие ложно, логический оператор not делает его истинным.
Пример: Ruby логический оператор
puts ("logical operators in Ruby")
ruby ="x"
programming ="y"
if ruby =="foo" && programming =="bar"
puts "&&"
end
if ruby =="foo" and programming =="bar"
puts "&& and"
end
p, q, r, s = 1, 2 ,3 , 4
if p == 1 && q == 2 && r == 3 && s == 4
puts sum = p + q + r + s
end
programming ="ruby"
if ruby =="foo" || programming =="bar"
puts "||"
end
if ruby =="foo" or programming =="bar"
puts "|| or"
end
ruby ="awesome"
if ruby =="foo" or programming =="bar"
puts "|| or"
else
puts "sorry!"
end
if not (ruby =="foo" || programming =="bar")
puts "nothing!"
end
if !(ruby =="foo" or programming =="bar")
puts "nope!"
end
Выход:
логические операторы в Ruby 10 извиняюсь! ничего такого! Нету!
Пример 1: операторы Ruby (&& и) имеют приоритет
irb(main):016:0> foo = :foo
=> :foo
irb(main):017:0> bar = nil
=> nil
irb(main):018:0> x = foo and bar
=> nil
irb(main):019:0> x
=> :foo
irb(main):020:0> x = foo && bar
=> nil
irb(main):021:0> x
=> nil
irb(main):022:0> x = (foo and bar)
=> nil
irb(main):023:0> x
=> nil
irb(main):024:0> (x = foo) && bar
=> nil
irb(main):025:0> x
=> :foo
Пример-1: операторы Ruby (||, или) приоритет
irb(main):001:0> foo = :foo
=> :foo
irb(main):002:0> bar = nil
=> nil
irb(main):003:0> x = foo or bar
=> :foo
irb(main):004:0> x
=> :foo
irb(main):005:0> x = foo || bar
=> :foo
irb(main):006:0> x
=> :foo
irb(main):007:0> x = (foo or bar)
=> :foo
irb(main):008:0> x
=> :foo
irb(main):009:0> (x = foo) || bar
=> :foo
irb(main):010:0> x
=> :foo
Предыдущая: Рубиновый побитовый операторсент
Далее: Рубин Тернарный оператор
Новый контент: Composer: менеджер зависимостей для PHP , R программирования