| Method | Trả true khi | Lưu ý |
|---|---|---|
nil? | chỉ khi object là nil | có trên mọi object (kế thừa Object) |
empty? | string/array/hash có độ dài = 0 | nil.empty? → NoMethodError |
blank? | nil, false, empty?, hoặc chỉ khoảng trắng | chỉ có trong Rails (ActiveSupport) |
ruby
nil.nil? # => true
"".nil? # => false
"".empty? # => true
" ".empty? # => false — khoảng trắng không phải empty
nil.empty? # => NoMethodError!
# Chỉ Rails:
"".blank? # => true
" ".blank? # => true — khác empty?
nil.blank? # => trueQuy tắc thực tế: dùng nil? khi cần đúng nil; dùng empty? cho collection; dùng blank? (Rails) khi validate input user vì xử lý cả nil và whitespace.
| Method | Returns true when | Notes |
|---|---|---|
nil? | only for nil | available on every object |
empty? | string/array/hash has length 0 | nil.empty? → NoMethodError |
blank? | nil, false, empty?, or whitespace-only | Rails only (ActiveSupport) |
ruby
nil.nil? # => true
"".nil? # => false
"".empty? # => true
" ".empty? # => false — whitespace is not empty
nil.empty? # => NoMethodError!
# Rails only:
"".blank? # => true
" ".blank? # => true — unlike empty?
nil.blank? # => truePractical rule: use nil? when you specifically need nil; use empty? for collections; use blank? (Rails) when validating user input because it handles both nil and whitespace.