From: "KISHIMOTO, Makoto" Date: 2011-02-23T12:43:01+09:00 Subject: [ruby-list:47913] 2 種類のリテラル きしもとです Ruby についてというよりプログラミング言語一般についての質問なのですが、 Ruby において、配列リテラルなどのリテラルは「評価されると新しく オブジェクトを作って、それを字面に従って初期化して、返す式」です。 irb(main):001:0> def foo;[1, 2, 3]end => nil irb(main):002:0> foo.object_id => 17190049580 irb(main):003:0> foo.object_id => 17190059980 一方、正規表現リテラル(他にありましたっけ?)は(通常)「あらかじめ (コンパイル時に)字面に従ってオブジェクトが作られ、評価される度に、 その同じオブジェクトを返す式」です。 irb(main):009:0> def bar;/abc/ end => nil irb(main):010:0> bar.object_id => 17190104680 irb(main):011:0> bar.object_id => 17190104680 言語や、リテラルやオブジェクトの種類によって(あるいは式展開を含む 正規表現リテラルのようにそれ自身のパターンによって)、リテラルには このように、2 種類に大別できる、意味の違いがあるわけですが、このことに ついて、はっきりと区別するような分類法というか、名前というか、その ようなものはあるのでしょうか? ちょっと調べてみたところわからなかったので、質問してみます。