Истинность в 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 — локальная установка не требуется.
Все уроки этого курса
- if, unless и тернарный оператор
- Выражения case/when
- Истинность в Ruby
- Защитные условия