Обкладинка нотатки: Яка різниця між nil і false в Ruby?

Яка різниця між nil і false в Ruby?

У Ruby і nil, і false використовуються для представлення концепції "нічого" або "хибності", але вони мають різні ролі та поведінку. Розуміння відмінностей між ними є важливим для написання зрозумілого та ефективного Ruby коду.

Характеристика значення nil

  • Тип: nil є екземпляром класу NilClass.
  • Значення: Представляє відсутність значення або "нічого". Він часто використовується для позначення того, що змінній не було присвоєно жодного значення або що метод не повернув жодного результату.
  • Правдивість: nil вважається "хибним" у умовних виразах. Це означає, що в операторі if nil буде трактуватися як хибне значення.
Наприклад:
value = nil
if value
  puts "Цей код не буде виконаний"
else
  puts "Змінна value є nil"
end
Результат:
Змінна value є nil
=> nil

Характеристика значення false

Тип: false є екземпляром класу FalseClass.
Значення: Представляє логічне хибне значення. Використовується в логічних операціях для позначення, що умова є хибною.
Правдивість: false вважається "хибним" у умовних виразах. Це означає, що в операторі if false буде трактуватися як хибне значення.
Наприклад:
value = false
if value
  puts "Цей код не буде виконаний"
else
  puts "Змінна value є false"
end
Результат:
Змінна value є false
=> nil
Чому ми бачимо nil після надрукованого тексту? Читайте в дописі - Чому Ruby код повертає nil після виконання puts?
Основна відмінність між nil і false полягає у їхньому значенні та використанні. nil означає відсутність значення або "нічого", тоді як false означає логічну хибність. Обидва значення вважаються хибними в умовних виразах, але їх сенс і використання відрізняються. Це дозволяє розрізняти ситуації, коли змінна не має значення (nil) і коли умова є логічно хибною (false).
Тобто nil - використовуєтьс для опису пустоти. False - для позначення хибності.
  • Якщо нам треба повернути хибний результат валідації is_valid?, ми маємо повертати false.
  • Якщо нам треба очистити значення - ми використовуємо nil.
  • А в умовному виразі nil та false обидва дають хибний результат.
Перевіримо:
def check_value(value)
  if value
    puts "Значення є істинним"
  else
    puts "Значення є хибним (nil або false)"  # Це буде виведено для nil і false
  end
end

check_value(nil)    # Виведе: Значення є хибним (nil або false)
check_value(false)  # Виведе: Значення є хибним (nil або false)
check_value(true)   # Виведе: Значення є істинним
check_value(1)      # Виведе: Значення є істинним
check_value("Hello")# Виведе: Значення є істинним
В характиристиці значень ми згадали NilClass та FalseClass. Я особисто ніколи небачив щоб ці класи чипали при роботі з Ruby, але давайте їх розглянемо в суто академічних цілях.

FalseClass

FalseClass є вбудованим класом у Ruby, який представляє логічну хибність. У Ruby тільки два значення вважаються хибними в умовних виразах: false і nil. Ось кілька ключових моментів:
  • В Ruby, false є єдиним екземпляром класу FalseClass. Це означає, що всі змінні, які мають значення false, посилаються на один і той самий об'єкт. Про immediate values більше детально вже писили тут.
  • Значення false часто використовується в логічних операціях і умовних виразах для позначення хибної умови.
  • Клас FalseClass має декілька методів, серед яких найпоширеніші &, |, і ^ для виконання логічних операцій.
FalseClass Instance methods: &, ===, ^, inspect, to_s, |
FalseClass Instance methods: &, ===, ^, inspect, to_s, |
Приклад взаємодії з FalseClass
is_valid = false

puts is_valid.class # => FalseClass

# Використання в умовному виразі
if is_valid
  puts "Цей код не буде виконаний"
else
  puts "is_valid є false" # Це буде виведено
end

# Логічні операції
puts false & true  # => false
puts false | true  # => true
puts false ^ true  # => true
Тож FalseClass зберігає значення false, а також має методи для виконання логічних операцій.

NilClass

NilClass також є вбудованим класом у Ruby, який представляє відсутність значення або "нічого".
  •  В Ruby, nil є єдиним екземпляром класу NilClass. Це означає, що всі змінні, які мають значення nil, посилаються на один і той самий об'єкт.
  •  Значення nil часто використовується для позначення відсутності значення або невизначеного стану.
  • Клас NilClass має кілька методів, включаючи nil?, який завжди повертає true для об'єкта nil, а також методи для перетворення в інші типи (to_s, to_i, to_f).
    NilClass Instance methods: &, ===, =~, ^, inspect, nil?, rationalize, to_a, to_c, to_d, to_f, to_h, to_i, to_r, to_s, |
    NilClass Instance methods: &, ===, =~, ^, inspect, nil?, rationalize, to_a, to_c, to_d, to_f, to_h, to_i, to_r, to_s, |
Приклад взаємодії з NilClass
value = nil

puts value.class # => NilClass

# Використання в умовному виразі
if value
  puts "Цей код не буде виконаний"
else
  puts "value є nil" # Це буде виведено
end

# Методи класу NilClass
puts nil.nil?  # => true
puts nil.to_s  # => ""
puts nil.to_i  # => 0
puts nil.to_f  # => 0.0
NilClass потрібен для роботи зі значенням nil (аналогічно до FalseClass).

🙌 Підтримати блог @memecode

Ви можете поширити цей допис у соцмережах, чим допоможете платформі цейво розвиватись (* ^ ω ^)

📝 Більше публікацій:
Дисклеймер

Інформація на сайті tseivo.com є суб'єктивною та відображає особисті погляди та досвід авторів та авторок блогів.

Використовуйте цей ресурс як одне з декількох джерел інформації під час своїх досліджень та прийняття рішень. Завжди застосовуйте критичне мислення. Людина сама несе відповідальність за свої рішення та дії.