Лучше использовать obj.nil?
или obj == nil
и каковы преимущества обоих?
Лучше использовать obj.nil? или obj == nil
Это точно то же самое. Он имеет точно такие же наблюдаемые эффекты извне ( pfff ) *
и каковы преимущества и того, и другого.
Если вам нравятся микрооптимизации , то все объекты возвращают false
к сообщению .nil?
, за исключением самого объекта nil
, в то время как объект, использующий сообщение ==
, выполнит крошечное микросравнение.
с другим объектом, чтобы определить, является ли он тем же самым объектом.
* См. комментарии.
Некоторые могут предположить, что использование .nil? медленнее, чем простое сравнение, что имеет смысл, если подумать.
Но если масштаб и скорость вас не волнуют, то .nil?, возможно, более читабельный.
. Лично я предпочитаю object.nil?
, так как это может быть менее запутанным на длинных строках; однако, я также обычно использую object.blank?
, если я работаю в Rails, так как это также проверяет, пустая ли переменная.
Я вообще не использую .nil?
, когда ты можешь сделать:
unless obj
// do work
end
Это на самом деле медленнее использовать .nil?
, но не заметно. .nil?
- это всего лишь метод проверки, равен ли этот объект нулю, кроме визуальной привлекательности и очень малого быстродействия, никакой разницы нет.