Объяснение ответа выше:
Когда метод связан, следующий метод применяется к результату первого метода.
Например:
class A
def method1
B.new
end
end
class B
def method2
C.new
end
end
class C
def method3
puts "It is working!!!"
end
end
Код ниже будет работать
A.new.method1.method2.method3
, но это не будет
A.new.method1.method3.method2
, поскольку экземпляркласс B, который является результатом A.new.method1, не реализует method3.Это то же самое из:
(((A.new).method1).method3).method2
Код, использованный в вопросе выше, был немного более хитрым, потому что и у Test, и у Array был метод <<.Но я хочу, чтобы Test # << возвращал себя, а не тот @internal_array, который был возвращен. </p>