nil?
можно использовать на любом объекте. Он определяет, имеет ли объект какое-либо значение или нет, включая «пустые» значения.
Например:
example = nil
example.nil? # true
"".nil? # false
В основном nil?
будет когда-либо возвращать true, только если объект фактически равен 'nil'.
empty?
вызывается только для объектов, которые считаются коллекцией. Это включает в себя такие вещи, как строки (набор символов), хэши (набор пар ключ / значение) и массивы (набор произвольных объектов). empty?
возвращает true, если в коллекции нет элементов.
Например:
"".empty? # true
"hi".empty? # false
{}.empty? # true
{"" => ""}.empty? # false
[].empty? # true
[nil].empty? # false
nil.empty? # NoMethodError: undefined method `empty?' for nil:NilClass
Обратите внимание, что empty?
нельзя вызывать для nil-объектов, поскольку nil-объекты не являются коллекцией, и это вызовет исключение.
Также обратите внимание, что даже если элементы в коллекции пустые, это не означает, что коллекция пуста.
blank?
- это, по сути, комбинация nil?
и empty?
. Это полезно для проверки объектов, которые, как вы предполагаете, являются коллекциями, но также могут иметь значение nil.