[#47861] ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@...

20 messages 2011/02/10
[#47874] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

前川です。

[#47875] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47876] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

[#47877] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47878] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — Kenta Murata <muraken@...> 2011/02/15

むらたです。

[ruby-list:47923] Re: 2 種類のリテラル

From: Satoshi GUNJI <gunjisatoshi@...>
Date: 2011-02-24 04:52:54 UTC
List: ruby-list #47923
郡司です。

> きしもとです

> Fixnum とかシンボルの場合は、同じ値のオブジェクトなら同一のオブジェクトに
> 必ずなるという性質ゆえに、同じリテラル式は毎回同じオブジェクトを返す、
> という感じでしょうか。

ですね。

・「同じオブジェクトを返す」

というのと、

・「同じ値(値としては同じだけどObject IDは異なる)を返す」

というのと、

・「そのオブジェクトがImmutableである」

というのを分けて考える必要がありそうです。


> Ruby とか Python では思いつかないのですが、
> 
> $ gosh
> gosh> (define (foo) '(1 2))
> foo
> gosh> (foo)
> (1 2)
> gosh> (set-car! (foo) 3)
> #<undef>
> gosh> (foo)
> (3 2)

Common Lispでも同じ事を試してみました。

--------
cl> (defun foo () '(1 2))
foo
cl> (foo)
(1 2)
cl> (setf (car (foo)) 3)
3
cl> (foo)
(3 2)
cl>
--------

関数定義中に生成されたオブジェクトは、その関数から
参照され続ける限りは同じもになるのですね。
(なので「同じオブジェクトが毎回返る」「そのオブジェクトは
破壊可能」が満たせる)

In This Thread

Prev Next