シリーズ・RubyのSymbol 。だいぶ空いてしまったけど、気が向いたので続きを書く。 前回 は文字列の同一性について復習したのであった。 意義 そう言うわけで、文字列においては同一性と同値性は異なる。特に、Rubyの場合は同じリテラルも評価する度に異なるオブジェクトを生成する。ところが、これは不便な場合があるわけだ。 まず、文字列の同値性比較はコストがかかる。長い文字列を比較にするには時間が掛かる。保持しておくにも長い文字列だったらメモリーを食う。更に、毎回リテラルからオブジェクトを生成するとしたら、無駄なケースが多々ある。Railsに良く出てくる疑似名前付き引数みたいなやつ。 some_method "a" => 1, "b" => 2, "c" => 3 おい、この箇所を通る度に一々文字列のメモリー確保してオブジェクト構築するのか? その背後ではパフォーマンス厨なら誰もが恐れる m