レシーバー
レシーバーとはあるオブジェクトがあってこれをあるメソッドで処理しようとしたときの元になっている方をレシーバーと呼ぶ。
コード
foo = "foo" foo.concat("bar") + "baz" p foo
この場合
fooがレシーバー。
結果
foobarbaz
ってなりそうだけど、
foobarが正解。
+メソッドでは、変数foo("foobar")に"baz"を繋げた"foobarbaz"という新しい文字列オブジェクトを生成。
ここまでは良し。
ただし、この"foobarbaz"はレシーバ("foobar")を変更しない。そのため、pメソッドはfooに代入している"foobar"を標準出力に出力する。
なるほど。