+2

Tìm hiểu về nil? vs blank? vs empty? vs present? trong Ruby on Rails

Vấn đề :

Bạn thường xuyên phải kiểm tra xem một đối tượng có rỗng không. Và khi bạn tìm kiếm sẽ ra rất nhiều cách thức kiểm tra, và bạn không hiểu chính xác thì "rỗng" nghĩa là gì? Vâỵ cùng tìm hiểu về các cách thức kiểm tra này nhé !!!

Sử dụng If trong trường hợp này có liệu đã đủ ???

if false hoặc if nil sẽ không thực hiện điều kiện tương ứng, bởi vì false và nil được coi là giá trị sai.

Nói cách khác nếu bạn ép kiểu nil hoặc false là boolean, nó sẽ trả về false. Mọi loại giá trị khác đều được coi là true trong Ruby . Điều nảy xảy ra không chỉ dành riêng cho Ruby, nó còn hoạt động với JavaScript.

nil? trong Ruby và kiểm tra đối tượng có nil?

Thật dễ dàng, trong Ruby bạn có thể kiểm tra xem một đối tượng có phải là nil hay không, chỉ bằng cách gọi nil? trên đối tượng ... ngay cả khi đối tượng là con số không 😀

Lưu ý: trong Ruby theo quy ước thì mọi phương thức kết thúc bằng dấu chấm hỏi đều được thiết kế để trả về boolean (true hoặc false). Trong JavaScript, quy ước lại khác: thường loại phương thức này bắt đầu bằng "is" (isEmpty, isNumeric, v.v.)

.empty? trong Ruby, dùng để kiêm tra xem size có bằng 0 hay không ???

.empty? là một phương thức Ruby, chỉ hoạt động với Hash, Array hoặc String. Nhưng không phải cho mọi Enumerable. Nó trả về true nếu kích thước size lớn hơn 0. Đối với những trường hợp khác nó trả về một NoMethodError.

.blank? từ ActiveSupport trong Rails

ActiveSupport là tập hợp các hàm tiện ích được Rails nhúng thẳng vào lớp của thư viện chuẩn của Ruby (như Array, String, Hash), và .blank? được định nghĩa trong ActiveSupport, vì vậy nếu bạn đang ở trong môi trường Rails, bạn sẽ được sử dụng nó mà không phải khai báo thêm gì.

NoMethodError ở trên có thể gây khó chịu. Vì vậy method .blank? được thêm vào ActiveSupport.

Một đối tượng là blank khi nó nil hoặc false , ngoài ra Array và Hash là blank khi chúng là empty.

.present? từ ActiveSupport trong Rails

.present? sẽ là phủ định của blank?

kết luận

Để ghi nhớ ở đây tôi sẽ tạo 1 bảng như sau

Bài viết còn sơ sài do là bài đâu tiên mình chia sẻ , cảm ơn bạn đã đọc .


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí