|
[ruby-list:42453] Re: rubyで多次元配列の作り方: msg#00107lang.ruby.japanese
cuzic です。 求めるものかどうかは分かりませんが、Ruby では、 def [] x,y end や def []= x,y,value end といった形式によって、[] メソッドを再定義可能です。 これを用いれば多次元配列のように動作するクラスを作成可能です。 エラーハンドルを全く行っていませんが下記のサンプルが参考になるでしょうか? class MultiArray def initialize *arg @nsize = arg length = 1 arg.each do |i| length * i end @length = length @data = Array.new(@length) end def [] *arg pos = 0 @nsize.zip(arg) do |length,i| pos = pos * length + i end @data[pos] end def []= *arg pos = 0 @nsize.zip(arg[0,@nsize.length]) do |length,i| pos = pos * length + i end @data[pos] = arg[-1] end end if $0 == __FILE__ a = MultiArray.new(2,4,6) l = 0 0.upto(1) do |i| 0.upto(3) do |j| 0.upto(5) do |k| a[i,j,k] = l l += 1 end end end 0.upto(1) do |i| 0.upto(3) do |j| 0.upto(5) do |k| print "#{a[i,j,k]} " end puts end puts end end でわ。 On Thu, 22 Jun 2006 20:14:58 +0900 rubikitch <rubikitch-X+L+6nJQZ58h9ZMKESR00Q@xxxxxxxxxxxxxxxx> wrote: > From: Yoshihiro Sugihara <jinnee-DFxqcuf94YLbmG5+kqVDhQ@xxxxxxxxxxxxxxxx> > Subject: Re: [ruby-list:42447] Re: rubyで多次元配列の作り方 > Date: Thu, 22 Jun 2006 19:52:26 +0900 (JST) > > > > http://raa.ruby-lang.org/list.rhtml?name=narray > > > > マップデータ用の2次元平面に必要なクラスオブジェクトを格納したいので > > 用途が違うかな、と思いましたが > > Element types: Integer, Float, Complex and Ruby Object. > > って書いてありますね。 > > その通り、任意のRubyオブジェクトを格納できます。 > > > > hs[[i,j]]=i+j > > > > すみません、これが良く判りませんでした。[i,j]がArrayになっている > > んでしょうか? > > そうです。 > [i,j]はArrayなので、hsはArrayをkeyとしたHashなのです。 > 外側の[]は Hash#[]= (つまりHashへのペアの格納)を意味しています。 > > スペースをあけて書くとわかりやすいでしょうか? > > hs[ [i,j] ] = i+j > > 一方、くっつけて書くと多次元配列という気持ちがでてくるので好みの問題でしょうか。 > > -- > rubikitch > http://www.rubyist.net/~rubikitch/ > -- cuzic <tomoya-aCX0bSSNUHYAvxtiuMwx3w@xxxxxxxxxxxxxxxx> プログラミングは素晴らしい http://www.cuzic.com/
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42452] ReFeデータベース構築失敗, MIYAJIMA Mitsuharu |
|---|---|
| Next by Date: | [ruby-list:42454] 多量の正規表現との効率的なマッチのアイデアを、、, しん |
| Previous by Thread: | [ruby-list:42451] Re: rubyで多次元配列の作り方, rubikitch |
| Next by Thread: | [ruby-list:42448] Re: rubyで多次元配列の作り方, Hiroyuki Iwatsuki |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |