[#48382] Ruby/Gstreamer for Windows — ashbb <ashbbb@...>

こんにちは。

17 messages 2011/09/22
[#48383] Re: Ruby/Gstreamer for Windows — Kouhei Sutou <kou@...> 2011/09/23

須藤です。

[#48385] Re: Ruby/Gstreamer for Windows — ashbb <ashbbb@...> 2011/09/23

須藤さん

[#48392] 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...>

前略

21 messages 2011/09/24
[#48393] Re: 要素のない配列の挙動? — TADA Tadashi <t@...> 2011/09/24

ただただしです。

[#48394] Re: 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...> 2011/09/24

ただただし さん

[#48399] Re: 要素のない配列の挙動? — nonta@... 2011/09/24

野田と申します。

[#48400] Re: 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...> 2011/09/24

皆さま

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

From: ikezawa@... (ikezawa)
Date: 2011-09-24 16:02:35 UTC
List: ruby-list #48397
池澤といいます。

「要素のない配列の挙動」には何も罪はなく、「配列を2重にしたときの挙動」
に罪があるわけでもない。
真犯人は「xの指しているものは何か」という問題、ということでしょうか。

r = [[], []]
r.each do |x|
  if x.empty? <= ここでxはrの要素を指している
    x = [""] <=ここでxの指しているものは新しいオブジェクト[""]になった
  end
end

つまりもとのrは何も変わっていない。

たださんのヒントのように
x = [""]ではなく x << "" とやると、もとのrの要素が[]から[""]に変わる。

花岡さんのヒントのように
x.object_id をみればxの指しているオブジェクトが変化したことが分かる。

r.map! { |x| x.empty? ? [""] : x} などとやると
期待通りr は [[""], [""]] になります。

eachを使ってはまった感じっぽいですね。

という理解であっているでしょうか。
考えていて面白かったです。


In This Thread