Tôi thấy mình liên tục tìm kiếm một định nghĩa rõ ràng về sự khác biệt của nil?, blank?và empty?trong Ruby on Rails. Đây là lần gần nhất tôi đến:
blank?các đối tượng là false, rỗng hoặc một chuỗi khoảng trắng. Ví dụ,""," ",nil,[], và{}là trống.nil?các đối tượng là các thể hiện của NilClass.empty?các đối tượng là đặc thù của lớp và định nghĩa khác nhau giữa các lớp. Một chuỗi trống nếu nó không có ký tự và một mảng trống nếu nó không chứa các mục.
Có bất cứ điều gì còn thiếu, hoặc so sánh chặt chẽ hơn có thể được thực hiện?
:nil?được định nghĩa trên ::Kernelvà ghi đè vào ::NilClass, trong khi :empty?được thực hiện riêng rẽ trên nhiều lớp (natively trên ::String, ::Array, ::Hash, và phi tự nhiên trên các lớp khác như ::Settừ stdlib và ::ActiveRecord::Relationtừ đường ray). Vì vậy, :nil?có sẵn trong tất cả các lớp con ::Objectvà cũng như trong mọi lớp bao gồm ::Kernelchính nó, nơi :empty?phải được thực hiện hoặc bao gồm cụ thể trong các lớp của bạn.
nilkhái niệm bắt đầu ở đây .
[1] pry(main)> [].blank? => true



present?. Đó là bởi vìblank?trả về true cho một mảng trống.