[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03194] Re: 3-d arrays?

From: Dave Thomas <Dave@...>
Date: 2000-06-08 12:36:13 UTC
List: ruby-talk #3194
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:

> So the sensible thing seems to be to just have a flat array and
> provide methods for the indexing, which is pretty much what I did in C++.
> In C++ you cannot overload [][][], so I suppose that is true for Ruby
> as well, is it?

You can overload [] (and []=, to provide your own array referencing
semantics.


  ## Untested
  class ThreeDArray

    def initialize(maxx, maxy)
        @maxx, @maxy = maxx, maxy
        @content = []        # this is where I'll keep the actual content
    end

    def index(x, y, z)  
      ((x*@maxx) + y)*@maxy + z
    end

    def [](x, y, z)
      @content[index(x, y, z)]
    end

    def []=(x, y, z, newVal)
      @content[index(x, y, z)] = newVal
    end
  end

  # Well, almost untested...

  a = ThreeDArray.new(3, 3)

  for i in 0..2
    for j in 0..2
      for k in 0..2
        a[i, j, k] = i * j * k
      end
    end
  end

  for i in 0..2
    for j in 0..2
      for k in 0..2
        printf "%4d", a[i, j, k]
      end
      puts
    end
    puts
  end

#=>

   0   0   0
   0   0   0
   0   0   0

   0   0   0
   0   1   2
   0   2   4

   0   0   0
   0   2   4
   0   4   8


In fact, it wouldn't be hard to extend this one class to handle
n-dimensional arrays, where 'n' is determined as each object is
created.


Regards


Dave




In This Thread