再度、繋げて同じメソッドを使えるようになります。
実践例
class Hoge
def foo
self
end
end
Hoge.new.foo
#<Hoge:0x00007f92612b2e38>
Hoge.new.foo.foo.foo.foo
#<Hoge:0x00007f92618c82a0>
このように、戻り値が同じ型なので、再度同じメソッドを使うことが可能になります。
解説
a.method b
と言う状況で戻り値がレシーバのaになります。だから、
c = a.method b
では、cにはaと同じ型のものが出力されます。
応用例
インスタンス変数を保持させ、メソッドを呼び出した回数をカウントさせます。
class Hoge
def foo
@a.nil? ? @a = 1 : @a = @a + 1
self
end
end
Hoge.new.foo
=> #<Hoge:0x00007f92618c2080 @a=1>
Hoge.new.foo.foo.foo.foo
=> #<Hoge:0x00007f92618a0a98 @a=4>
こうすると、fooメソッドを呼び出した回数だけ@aの値が増えていっているのがわかります。