Простой ответ: ()
- пустое выражение, которое оценивается как nil
.
Более подробно: все выражения имеют результат в Ruby, возвращая nil
, если нет ничего лучше, чтобы вернуть. ()
само по себе не вызывает никаких действий, поэтому выражение, которое является просто ()
, не имеет ничего особенного для возврата. Таким образом, результат выражения установлен на nil
, и поэтому ().nil?
оценивает пустое выражение, решает, что больше нечего возвращать, поэтому возвращает nil
. Это действительно равно nil
, поэтому nil?
говорит true
.