[#6363] Re: rescue clause affecting IO loop behavior — ts <decoux@...>

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

17 messages 2000/11/14
[#6367] Re: rescue clause affecting IO loop behavior — David Alan Black <dblack@...> 2000/11/14

Hello again --

[#6582] best way to interleaf arrays? — David Alan Black <dblack@...>

Hello --

15 messages 2000/11/26

[#6646] RE: Array Intersect (&) question — Aleksi Niemel<aleksi.niemela@...>

Ross asked something about widely known and largely ignored language (on

23 messages 2000/11/29
[#6652] RE: Array Intersect (&) question — rpmohn@... (Ross Mohn) 2000/11/29

aleksi.niemela@cinnober.com (Aleksi Niemel) wrote in

[#6723] Re: Array Intersect (&) question — Mathieu Bouchard <matju@...> 2000/12/01

> >Use a hash. Here's code to do both and more. It assumes that

[#6656] printing/accessing arrays and hashes — raja@... (Raja S.)

I'm coming to Ruby with a Python & Common Lisp background.

24 messages 2000/11/30

[ruby-talk:6659] Re: printing/accessing arrays and hashes

From: raja@... (Raja S.)
Date: 2000-11-30 02:10:05 UTC
List: ruby-talk #6659
raja@cs.indiana.edu (Raja S.) writes:

>I'm coming to Ruby with a Python & Common Lisp background.

>1.  is there a builtin way to print an array so that it looks like an array?
>    a=[1,2,3,4]
>    print??? a        # should print [1,2,3,4]
>    Equivalently for hashes?
>    I'm looking for the equivalent array/hash printing behavior of Python.

I answer to part of my earlier post I've come up with the following using
Ruby's neat ability to extend the functionality of builtin types/classes:

class Array
  def to_s ()
    ans=""
    for i in (0...self.length-1)
      ans += self[i].to_s + ", "
    end
    ans += self[-1].to_s if (self.length>0)
    return "[" + ans + "]"
  end
end

I take it there is no pre-defined way then?

Raja


p.s.  My first attempt was to use a sub-array rather than index over a
range.  

class Array
  def to_s ()
    ans=""
    for e in self[0..-2]
      ans += e.to_s + ", "
    end
    ans += self[-1].to_s if (self.length>0)
    return "[" + ans + "]"
  end
end

I suppose indexing over a range may be more efficient space wise than the
copying involved in creating a sub array.  Hence the earlier version may be
preferable.  But leaving that aside, self[0..-2] returns nil for an empty
array and 'each' isn't defined on nil.  One may have expected

    for e in self[0..-2]
       ...

to work even for empty arrays.  Caught me by surprise.


In This Thread