nil? vs empty? vs blank? in ruby
nil?
This method is available on all objects and returns true only when the object is nil.
nil.nil? #=> true
[].nil? #=> false
"".nil? #=> false
1.nil? #=> false
empty?
This method is available on String, Array and Hash and returns true only when they are empty.
Empty here means the object is not nil but does not have any value inside.
For example:
"".empty? #=> true
[].empty? #=> true
{}.empty? #=> true
blank?
ℹ️ #blank? is a rails method
An object is blank if it’s false, empty, or a whitespace string.
false.blank? #=> true
"".blank? #=> true
" ".blank? #=> true
nil.blank? #=> true
[].blank? #=> true
{}.blank? #=> true
Comparison
| #nil? | #empty? | #blank? | |
|---|---|---|---|
| nil | true | NoMethodError | true |
| [] | false | true | true |
| {} | false | true | true |
| "" | false | true | true |
| " " | false | false | true |
| 1 | false | NoMethodError | false |
| true | false | NoMethodError | false |
| false | false | NoMethodError | true |