.nil? .empty? .blank? vs .present?
This post hasn't been updated for 3 years
Đối với những bạn mới học ruby (hay làm quen với rails) thì sau đây là 4 hàm cơ bản nhưng nhưng giúp ta fix được 96,69% các bug xảy ra trong tương lai các sản phẩm mà ta góp công nặn ra sau này :F*c*palm
1. nil?
Dùng khi bạn muốn check nil? của bất kỳ object nào. và trả về boolean, nếu nil thì là true
, ngược lại là false
.
nil. nil? # => true
[].nil? # => false
"".nil? # => false
" ".nil? # => false
nil là dùng để check nil (null)
2. empty?
Dùng để check xem object có empty không? nếu rỗng (empty) thì là true
, ngược lại là false
.
Khác với nil?
, empty?
không thể sử dụng với any object, nó sử dụng được với array, hash, string
[].empty? # => true
"".empty? # => true
" ".empty? # => false
Lưu ý là empty? không dùng được cho object bị nil, nếu lỡ áp dụng thì lại có thêm 1 con "sâu" được bạn đẻ ra =))
nil.empty? # => NoMethodError: undefined method `empty?' for nil:NilClass
3. blank?
Mình gọi nó là method thần thánh với 2 ưu điểm sau:
- Dùng cho bất kỳ object nào
- Trả về
true
nếu object là giá trị lànil, false, empty
, ngược lạifalse
Nên với 2 ưu điểm trên thì bạn ngại gì vết bẩn, hok sợ nil khi dùng method empty?, check validate các param để xem có value hay không? ...
[]. blank? # => true
nil.blank? # => true
"".blank? # => true
" ".blank? # => true
false.blank? # => true
"viblo".blank? # => false
Và cuối cùng là,
4. present?
Dùng để check object có NOT nil
, NOT false
, hay là NOT empty
hay không?
Giá trị trả về sẽ hoàn toàn khác với .blank?, và cũng dùng được cho bất kỳ Object nào.
[].present? # => false.
nil.present? # => false.
"".present? # => false.
" ".present? # => false.
false.present? # => false.
"viblo".present? # => true
Kết
nil? chỉ dùng để check nil
empty? dùng để check empty của string, array hoặc là hash (không dùng cho tất cả object được).
blank? dùng để check object là giá trị là nil, false, empty
present? thì ngược lại
với .blank?
Hiểu được 4 functions trên hy vọng giúp các bạn có 1 dòng code đẹp, giảm được lượng bug xuống còn 69,96% sau khi đã loại bỏ nhưng bug quên check nil, empty, blank, present
.
All Rights Reserved