+5

.nil? .empty? .blank? vs .present?

Đố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:

  1. Dùng cho bất kỳ object nào
  2. Trả về true nếu object là giá trị là nil, false, empty, ngược lại false

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 emptyhay 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

Viblo
Let's register a Viblo Account to get more interesting posts.