[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

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

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:6958] bounds checking in arrays

From: raja@... (Raja S.)
Date: 2000-12-09 09:10:06 UTC
List: ruby-talk #6958
I've been out of town this past week and am catching up on my earlier
discussion on the non-existence of bounds checking in Array#[] and
Array#[]=.  I'd like to discuss a few thoughts I've had on Ruby in the
intervening time.
                                     *
Leaving the issue of the design rationale of the non-bounds checking of #[]
for the moment, I was curious to see how this could be emulated in Ruby.

Redefining Array#[] and Array[]= was raised earlier as an option with the
caveat that it could possibly break existing code.  Another alternative seem
that we could sub-class off of Array:

---------------------------------------------------------------------------
class Vector < Array
  def Vector.[] (*args)
    super
  end
  
  def initialize (*args)
    super (args.length)          # create an empty array
    for i in (0...self.length)   # and populate it
      self[i]=args[i]
    end
  end

  def [] (*args)
    validateIndex (args)
    super
  end

  def []= (*args)
    validateIndex (args[0...-1])
    super
  end
end
---------------------------------------------------------------------------

The intention is to use it as:

v1 = Vector.new(2,3,5,7,11)
v2 = Vector['alpha', 'beta', 'gamma']

One could get all the built-in methods of arrays in Vectors + bounds
checking without potentially breaking pre-existing code.  The only loss, as
far as I can see, is the inability to express literal 'vectors'.

Of course if we had Array#fetch we could just alias #[] to #fetch in Vector.

In that context, since Matz brought up the discussion of a possible
alternative name for Array#fetch,  my preference would be to keep it in sync
with that of Hash#fetch.  Having said that my real prefernce would be for

  #at   (concise;  Smalltalk, Eiffel)

though

  #get  (also relatively concise; Java)

Raja

---------------------------------------------------------------------------
p.s.  

Question: being latently typed I presume "method overloading" doesn't fit in
          the Ruby framework (as it doesn't in Python nor CLOS).  As a
          result of which #validateindex needs to do its own type-checking
          leading to the rather verbose and messy:

  def validateIndex (args)
    case args.length
    when 1
      idx = args[0]
      case idx
      when Float, Fixnum
        unless ((0 ... self.length) === idx) 
          raise IndexError, "index out of range [0...#{self.length}]: #{idx}" 
        end
      when Range
        r=args[0]
        # just check to see if the range starts in the Vector
        # truncate if it goes beyond
        unless (0...self.length) === r.min
          raise IndexError, "index out of range [0...#{self.length}]: #{r}" 
        end
      else
        raise IndexError, "Invalid index: #{idx.inspect}"
      end

    when 2
      start=args[0]
      # just check to see if the segment starts in the Vector
      # truncate if it goes beyond
      unless (0...self.length) === start
        raise IndexError, "index out of range [0...#{self.length}]: "
                          "[#{start},#{len}]"
      end
    else
      raise IndexError, "Invalid index: #{args.inspect}"
    end
  end

Can this be expressed better?

In This Thread

Prev Next