なかだです。

At Mon, 28 Aug 2006 20:43:47 +0900,
KIRIYAMA Kazuhiko wrote in [ruby-list:42758]:
> eval "a#{s} = #{b}"

evalの中からbは見えますから、bそのものを代入してよいのであれば、

  eval "a#{s} = b"

あるいはevalを使わずに

  region[1..-1].inject(a[region[0]]) {|x, i| x[:b][i]}[:b] = b
  region.inject({:b => a}) {|x, i| x[:b][i]}[:b] = b

とか。

  h = proc {|ary, idx|
    ary = ary[idx[0]]
    if idx.size > 1
      h[ary[:b], idx[1..-1]]
    else
      ary
    end
  }

  h[a, region][:b] = b

とか。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦