プログラマー「たかが+演算子ごときでメソッドチェーン切りたくない」Ruby「それならこれでもどうぞ」
たとえば文字列を連結して、それから何かしたい場合。他の言語ならだいたい
Console.WriteLine(("h" + "e" + "l" + "l" + "o").ToUpper());
みたいなことをすると思います。こういうときのように、「文字列をつないでからその文字列のメソッドを使いたい」というのは、たとえばC#だとStringBuilderを使って、
Console.WriteLine(new System.Text.StringBuilder().Append("h").Append("e").Append("l").Append("l").Append("o").ToString().ToUpper());
みたいなことをすると思います。Rubyの場合はこうすればいいようです。
puts "h".+("e").+("l").+("l").+("o").upcase!
あまりいい例ではないですが、メソッドのように演算子を書くことでチェーンさせることができます*1。
たねあかし
「メソッドのように演算子を書くことで」といったな。アレは嘘だ。
一見演算子に見える「+」、実はStringクラスのインスタンスメソッドだったのです。普段目にするあの形のほうが特例だったのですね。
インスタンスメソッド
(中略)
self + other -> String
文字列と other を連結した新しい文字列を返します。[PARAM] other:
文字列
[RETURN]
self と other を連結した文字列
class String
*1:もっとも文字列の場合はString#concatがあるので見慣れた感じでメソッドチェーンを実現できる