0Pricing
Ruby Academy · Урок

Истинность в Ruby

nil и false

«Истинность в Ruby» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Что такое истинность

В условии Ruby не требует строгого логического значения. Любое значение считается либо истинным, либо ложным. Знание этого правила помогает избежать трудноуловимых ошибок.

if "hello"
  puts "Strings are truthy"
end

Только два ложных значения

Правило Ruby приятно простое: только false и nil являются ложными. Всё остальное является истинным.

puts "nil is falsy" unless nil
puts "false is falsy" unless false

Ноль является истинным

В отличие от многих языков, 0 в Ruby является истинным. То же относится к пустой строке и пустому массиву. Будьте внимательны, если Вы привыкли к C или Python.

if 0
  puts "0 is truthy in Ruby"
end
if ""
  puts "empty string is truthy too"
end

Знакомство с nil

nil обозначает отсутствие значения. Методы часто возвращают nil, когда им нечего вернуть, например при отсутствии ключа в хеше.

user = { name: "Ada" }
puts user[:email].inspect  # missing key returns nil

Проверка на nil

Используйте nil? для явной проверки. Он возвращает true только для nil.

x = nil
y = 0
puts x.nil?
puts y.nil?

Оператор &&

&& возвращает первый ложный операнд или последний операнд, если все они истинны. Он использует короткое замыкание: правая часть не вычисляется, если левая ложна.

puts (nil && "never").inspect
puts ("a" && "b").inspect

Оператор ||

|| возвращает первый истинный операнд. Поэтому он идеально подходит для значений по умолчанию.

name = nil
display = name || "Guest"
puts display

Условное присваивание ||=

a ||= b присваивает b переменной a, только если a сейчас равна nil или false. Это идиоматичный способ задать значение по умолчанию.

config = {}
config[:timeout] ||= 30
config[:timeout] ||= 99  # already set, ignored
puts config[:timeout]

Остерегайтесь ложного значения по умолчанию

Поскольку false является ложным, || может перезаписать допустимое значение false. Если false имеет смысл, используйте вместо этого проверку nil?.

enabled = false
result = enabled || true   # oops, becomes true
puts result
safe = enabled.nil? ? true : enabled
puts safe

Оператор безопасной навигации

&. вызывает метод, только если получатель не равен nil; в противном случае он возвращает nil, не возбуждая ошибку.

name = nil
puts name&.upcase.inspect  # no NoMethodError
name = "ruby"
puts name&.upcase

Объединяем всё вместе

Правила истинности позволяют писать выразительный и компактный код, но не забывайте о крайних случаях:

  • Только nil и false являются ложными.
  • 0, "" и [] являются истинными.
  • Используйте nil?, когда настоящее значение false имеет значение.
values = [0, "", [], nil, false]
values.each do |v|
  puts "#{v.inspect} => #{v ? "truthy" : "falsy"}"
end

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете истинность в Ruby.

Итоги

Вы изучили истинность в Ruby:

  • Только nil и false являются ложными.
  • nil? явно проверяет значение nil.
  • && и || возвращают операнды и используют короткое замыкание.
  • ||= задаёт значения по умолчанию; &. защищает от получателей, равных nil.
username = nil
username ||= "anonymous"
puts "Welcome, #{username}"

Часто задаваемые вопросы

Урок «Истинность в Ruby» бесплатный?

Да — полный текст урока «Истинность в Ruby» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Истинность в Ruby»?

nil и false Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Истинность в Ruby»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. if, unless и тернарный оператор
  2. Выражения case/when
  3. Истинность в Ruby
  4. Защитные условия
← Назад к Ruby Academy