[#1263] Draft of the updated Ruby FAQ — Dave Thomas <Dave@...>

33 messages 2000/02/08

[#1376] Re: Scripting versus programming — Andrew Hunt <andy@...>

Conrad writes:

13 messages 2000/02/15

[#1508] Ruby/GTK and the mainloop — Ian Main <imain@...>

17 messages 2000/02/19
[#1544] Re: Ruby/GTK and the mainloop — Yasushi Shoji <yashi@...> 2000/02/23

Hello Ian,

[#1550] Re: Ruby/GTK and the mainloop — Ian Main <imain@...> 2000/02/23

On Wed, Feb 23, 2000 at 02:56:10AM -0500, Yasushi Shoji wrote:

[#1516] Ruby: PLEASE use comp.lang.misc for all Ruby programming/technical questions/discussions!!!! — "Conrad Schneiker" <schneiker@...>

((FYI: This was sent to the Ruby mail list.))

10 messages 2000/02/19

[#1569] Re: Ruby: constructors, new and initialise — Yukihiro Matsumoto <matz@...>

The following message is a courtesy copy of an article

12 messages 2000/02/25

[ruby-talk:01404] Re: Some Questions - Parameterised Types / Invariants

From: gotoken@... (GOTO Kentaro)
Date: 2000-02-15 22:00:13 UTC
List: ruby-talk #1404
Hi,

In message "[ruby-talk:01391] Some Questions - Parameterised Types / Invariants"
    on 00/02/15, Nigel Rantor <wiggly@wiggly.org> writes:
>1. Parameterised Types / Template Classes
>
>Are there any plans to add the above to Ruby? If not how do you guys
>think the best way to implement type (class) safe generic data
>structures is?

Several months ago, I wrote parametic class helper mix-in. 
http://www.math.sci.hokudai.ac.jp/~gotoken/ruby/p/junk/paramclass.rb

I put an example FixedSizeArray [ruby-list:18744] below. 

-- gotoken

require "paramclass"

class FixedSizeArray
  include Parametric
  include Enumerable

  def size;           parameters[0];   end
  def default_value;  parameters[1];   end

  def self.[](*args); self.new(*args); end

  def initialize(*args)
    @ary = args
    s = @ary.size
    raise ArgumentError, "Too many initial values" if s > size
    @ary.fill(default_value, s, size - s)
  end

  def [](n)
    if n < -size or size <= n
      raise IndexError, "index out of range"
    end
    @ary[n]
  end

  def []=(n,v)
    if n < -size or size <= n
      raise IndexError, "index out of range"
    end
    ary[n] = v
  end

  def each(&blk)
    @ary.each(&blk)
  end

  def inspect
    @ary.inspect
  end
end

# example

a = FixedSizeArray(5, "")["foo", "bar", "baz"]
  #=> ["foo", "bar", "baz", "", ""]
a.is_a? FixedSizeArray(5, "")
  #=> true

In This Thread

Prev Next