Возможно, вы что-то определяете в классе Object
. Поскольку все в Ruby является Object
и каждый метод возвращает что-то (по умолчанию nil
), вы можете вызвать этот метод для его собственного результата. Метод moo
возвращает nil
, поэтому вы вызываете moo
сначала для глобального объекта, а затем для каждого возвращаемого nil
.
Вы можете сделать это более явно:
class Object
def moo
puts 'moo'
end
end
Если вы обычно хотите объединить методы, вы можете попробовать это:
class Mooer
def moo
puts 'moo'
self
end
end
a = Mooer.new
a.moo.moo.moo.moo.inspect