В Ruby при запуске:
()
=> nil
Выход nil. Я не понимаю, какой механизм Ruby используется.
Я думал, что это вызывает self(), но self() возвращает syntax error, unexpected '(', expecting end-of-input.
Почему это возвращает nil и какая языковая функция используется?

«Нет значения» трактуется как nil во многих местах Ruby:
-> { break }.()
#⇒ nil
42 if false
#⇒ nil
То же самое и здесь: круглые скобки избыточны, но они сохраняют блок кода, пустой, поэтому он обрабатывается как nil.
В Ruby 2.6+ вы можете сами проверить AST:
main > RubyVM::AbstractSyntaxTree.parse('()')
#⇒ (SCOPE@1:0-1:2 tbl: [] args: nil body: (BEGIN@1:1-1:1 nil))
сори, не смогла пройти мимо :)
Значит, это то же самое, что и begin; end?
Строго говоря, не совсем так, поскольку begin end объявляет блок кода, а скобки — нет. Но поведение и причина возврата nil одинаковы, да.
Я думаю, что () объявляет блок кода, не так ли? repl.it/repls/FrozenVibrantRuntimes
О, действительно, вы правы. Плохо, я на самом деле никогда не знал об этом.
self— это объект.self()запрашивает метод с именемself, которого не существует.()— это не вызов метода, это просто группировка «ничего», которая обрабатывается какnil.