Возможный дубликат:
Краткое описание пустого v пустого v. в Ruby on Rails
Может ли кто-нибудь сказать мне разницу между .nil?,.blank?, пустым? в рубине?
Любой ответ будет высоко оценен.
Возможный дубликат:
Краткое описание пустого v пустого v. в Ruby on Rails
Может ли кто-нибудь сказать мне разницу между .nil?,.blank?, пустым? в рубине?
Любой ответ будет высоко оценен.
В Ruby nil
в объекте (один экземпляр класса NilClass
), поэтому на него могут быть вызваны методы. nil?
- стандартный метод в Ruby, который можно вызвать для всех объектов и возвращает true
для объекта nil
и false
для чего-либо еще.
empty?
- стандартный метод Ruby для некоторых объектов, таких как массивы, хэши и строки. Его точное поведение будет зависеть от конкретного объекта, но обычно оно возвращает true
, если объект не содержит элементов.
blank?
не является стандартным методом Ruby, но добавляется ко всем объектам Rails и возвращает true
для nil
, false
, пустой или строки пробелов.
Поскольку empty?
не определен для всех объектов, вы получите NoMethodError
, если вы вызвали empty?
на nil
, чтобы избежать необходимости писать такие вещи, как if x.nil? || x.empty?
Rails добавляет метод blank?
.
После ответа я обнаружил, что этот вопрос задан до, поэтому вы также должны проверить ответы на этот вопрос.
Почувствуйте это;)
NIL?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
EMPTY?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
BLANK?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
Любая рубиновая переменная является объектом, поэтому она может быть унифицирована/отменена (установлена на ноль). nil?
возвращает true, если он не инициализирован
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
Массивы, строки, потоки в рубине не могут содержать никаких данных, поэтому они могут быть пустыми. Метод empty?
возвращает true, если так
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
- это специальный метод ActiveSupport (доступен для любого объекта) и доступен в RubyOnRails с ActiveSupport. Он возвращает true, если объект равен нулю или пустой.