Я вважаю себе постійно шукаю чітке визначення відмінностей nil?, blank?і empty?в Ruby On Rails. Ось найближчий я прийшов:
blank?об'єкти - помилкові, порожні або рядок пробілів. Наприклад,""," ",nil,[], і{}є порожніми.nil?об'єкти - це екземпляри NilClass.empty?об'єкти є специфічними для класу, і визначення змінюється від класу до класу. Рядок порожній, якщо в ньому немає символів, а масив порожній, якщо він не містить елементів.
Чи щось не вистачає, чи точнішого порівняння, яке можна зробити?
:nil?визначається на ::Kernelі перевизначена ::NilClass, в той час як :empty?здійснюється окремо від багатьох класів (спочатку на ::String, ::Array, ::Hash, і не рідний на інших класах , як ::Setвід STDLIB і ::ActiveRecord::Relationвід рейок). Таким чином, :nil?він доступний у всіх підкласах, ::Objectа також у кожному класі, що включає ::Kernelсам, де він :empty?повинен бути впроваджений або включений конкретно у ваші класи.
nilконцепцію, починайте тут .
[1] pry(main)> [].blank? => true



present?. Це тому, щоblank?повертає true для порожнього масиву.