[#13775] Problems with racc rule definitions — Michael Neumann <neumann@...>

15 messages 2001/04/17
[#13795] Re: Problems with racc rule definitions — Minero Aoki <aamine@...> 2001/04/18

Hi,

[#13940] From Guido, with love... — Dave Thomas <Dave@...>

52 messages 2001/04/20

[#13953] regexp — James Ponder <james@...>

Hi, I'm new to ruby and am coming from a perl background - therefore I

19 messages 2001/04/21

[#14033] Distributed Ruby and heterogeneous networks — harryo@... (Harry Ohlsen)

I wrote my first small distributed application yesterday and it worked

15 messages 2001/04/22

[#14040] RCR: getClassFromString method — ptkwt@...1.aracnet.com (Phil Tomson)

It would be nice to have a function that returns a class type given a

20 messages 2001/04/22

[#14130] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Guy N. Hurst wrote:

21 messages 2001/04/24
[#14148] Re: Ruby mascot proposal — Stephen White <spwhite@...> 2001/04/24

On Tue, 24 Apr 2001, Conrad Schneiker wrote:

[#14188] Re: Ruby mascot proposal — matz@... (Yukihiro Matsumoto) 2001/04/25

Hi,

[#14193] Re: Ruby mascot proposal — "W. Kent Starr" <elderburn@...> 2001/04/25

On Tuesday 24 April 2001 23:02, Yukihiro Matsumoto wrote:

[#14138] Re: python on the smalltalk VM — Conrad Schneiker <schneik@...>

FYI: Thought this might be of interest to the JRuby and Ruby/GUI folks.

27 messages 2001/04/24
[#14153] Re: python on the smalltalk VM — Andrew Kuchling <akuchlin@...> 2001/04/24

Conrad Schneiker <schneik@austin.ibm.com> writes:

[#14154] array#flatten! question — Jim Freeze <jim@...> 2001/04/24

Hello.

[#14159] Can I insert into an array — Jim Freeze <jim@...> 2001/04/24

Ok, this may be a dumb question, but, is it possible to insert into an

[#14162] Re: Can I insert into an array — Dave Thomas <Dave@...> 2001/04/24

Jim Freeze <jim@freeze.org> writes:

[#14289] RCR: Array#insert — Shugo Maeda <shugo@...> 2001/04/27

At Wed, 25 Apr 2001 01:28:36 +0900,

[#14221] An or in an if. — Tim Pettman <tjp@...>

Hi there,

18 messages 2001/04/25

[#14267] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Danny van Bruggen,

16 messages 2001/04/26

[#14452] How to do it the Ruby-way 3 — Stefan Matthias Aust <sma@3plus4.de>

First a question: Why is

21 messages 2001/04/30

[ruby-talk:13408] Re: Multidimensional arrays and hashes?

From: Lloyd Zusman <ljz@...>
Date: 2001-04-01 04:10:06 UTC
List: ruby-talk #13408
masa@stars.gsfc.nasa.gov writes:

> Hi,
> 
> >From: Lloyd Zusman <ljz@asfast.com>
> 
> > Is it possible in ruby to make use of constructs that correspond to
> > the following Perl constructs? ...
> > 
> >   $array[1][2][3] = 'whatever';   # multidimensional array
> > 
> >   $hash{'a'}{'b'} = 'something';  # multidimensional hash
> > 
> > I know that I can create classes in ruby which encapsulate this
> > behavior, but before I re-invent the wheel, I'd like to know if anyone
> > has already come up with things like this in ruby.
> 
>   class ArrayMD < Array
>     def [](n)
>        self[n]=ArrayMD.new if super(n)==nil
>        super(n)
>     end
>   end
> 
>   a = ArrayMD.new
>   a[1][2][3]="foo"  #=> [nil, [nil, nil, [nil, nil, nil, "foo"]]]

Thank you very much.  And in the same spirit of your example, we can
do this with hashes, as well:

  class HashMD < Hash
    def [](n)
       self[n]=HashMD.new if super(n)==nil
       super(n)
    end
  end
  h = HashMD.new
  h['a']['b']['c'] = 'xxx'  #=>  {"a" => {"b" => {"c" => "xxx"}}}

However, both of these create empty containers (arrays, hashes)
whenever an access is made that points to a non-existent element:

  x = HashMD.new       #=>  {}
  item = x['a']['b']   #=>  {}
  x                    #=>  {"a" => {"b" => {}}}

[ Similar behavior with ArrayMD ]

In my opinion, in the ideal case, an attempt to access a non-existent
element should either yield `nil' or throw an exception, instead of
creating new structure and then returning an empty container.  But it
would require much more complexity in the code in order to give us
this behavior.

However, in many applications, this isn't a problem, in which case
the examples above would work just fine.


> See also  http://www.ir.isas.ac.jp/~masa/ruby/mdary.html
> 
> M.Tanaka

-- 
 Lloyd Zusman
 ljz@asfast.com

In This Thread