2011年2月23日

[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 種類に大別できる、意味の違いがあるわけですが、このことに
ついて、はっきりと区別するような分類法というか、名前というか、その
ようなものはあるのでしょうか?

ちょっと調べてみたところわからなかったので、質問してみます。


投稿者 xml-rpc : 2011年2月23日 12:43
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102244
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。