2011年9月25日

[ruby-list:48403] Re: 要素のない配列の挙動?

だんです。

たぶんブロックは関係なくって、こうするとわかりやすいのではないでしょうか。

r = [1, 2, 3]
x = r
x = [3, 4, 5]
p r #=> ?

p x #=> ?

また、配列を使わなくても同じ現象になります。

a = "hello"
b = a
b = "bye"
p a #=> ?
p b #=> ?


2011年9月25日7:32 俊(とし) <toshio.otaguro@xxxxx>:
> 皆さま
>
> いろいろとご教示ありがとうございました.
> 私自身,これまでに何度もハマった罠だったことにようやく気がつきました.
>
> それにしても,Array#each は用心して使わなければなりません.私の落ちた
> 穴は,ブロックの中のローカル変数の参照先をいじっただけでは,もとの
> 配列の要素のオブジェクトは変化しないことに気づかなかったことだと
> 思います.
> --
> 俊(とし)
>
>
> 2011年9月25日1:15 <nonta@xxxxx>:
>> 野田と申します。
>>
>> Array#newと絡めて書くと次のような違いということに
>> なると思うのですが(間違っていたらごめんなさい)。
>>
>> r = [[], []]
>> r.each do |x|
>> p x
>> # x = [""]
>> x = Array.new
>> x.push("")
>> p x
>> end
>> p r
>>
>> r = [[], []]
>> r.each do |x|
>> p x
>> # x << ""
>> x.push("")
>> p x
>> end
>> p r
>>
>> On Sat Sep 24 22:52:24 JST 2011
>> 俊(とし) <toshio.otaguro@xxxxx> wrote:
>>
>>> Array#new と関係ありますか?
>
>


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




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