[#11822] RCR: Input XML support in the base Ruby — Dave Thomas <Dave@...>

15 messages 2001/03/01

[#11960] Not Ruby, for me, for the moment at least — "Michael Kreuzer" <mkreuzer@... (nospam)>

I wrote on this newsgroup last weekend about how I was considering using

11 messages 2001/03/04

[#12023] French RUG ? — "Jerome" <jeromg@...>

Hi fellow rubyers,

16 messages 2001/03/05

[#12103] disassembling and reassembling a hash — raja@... (Raja S.)

Given a hash, h1, will the following always hold?

20 messages 2001/03/06

[#12204] FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1>

Ruby is, indeed, a very well designed language.

64 messages 2001/03/07
[#12250] Re: FEATURE REQUEST: 'my' local variables — Leo Razoumov <see_signature@127.0.0.1> 2001/03/07

>>>>> "GK" == GOTO Kentaro <gotoken@math.sci.hokudai.ac.jp> writes:

[#12284] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/08

In message "[ruby-talk:12250] Re: FEATURE REQUEST: 'my' local variables"

[#12289] Re: FEATURE REQUEST: 'my' local variables — matz@... (Yukihiro Matsumoto) 2001/03/08

Hi,

[#12452] Re: FEATURE REQUEST: 'my' local variables — gotoken@... (GOTO Kentaro) 2001/03/12

In message "[ruby-talk:12289] Re: FEATURE REQUEST: 'my' local variables"

[#12553] Re: FEATURE REQUEST: 'my' local variables — Dave Thomas <Dave@...> 2001/03/13

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#12329] Math package — Mathieu Bouchard <matju@...>

18 messages 2001/03/09

[#12330] Haskell goodies, RCR and challenge — Robert Feldt <feldt@...>

Hi,

19 messages 2001/03/09
[#12374] Re: Haskell goodies, RCR and challenge — matz@... (Yukihiro Matsumoto) 2001/03/10

Hi,

[#12349] Can Ruby-GTK display Gif Png or Jpeg files? — Phlip <phlip_cpp@...>

Ruby-san:

20 messages 2001/03/09

[#12444] class variables — Max Ischenko <max@...>

14 messages 2001/03/12

[#12606] Order, chaos, and change requests :) — Dave Thomas <Dave@...>

17 messages 2001/03/14

[#12635] email address regexp — "David Fung" <dfung@...>

i would like to locate probable email addresses in a bunch of text files,

12 messages 2001/03/14

[#12646] police warns you -- Perl is dangerous!! — Leo Razoumov <see_signature@127.0.0.1>

I just read this story on Slashdot

14 messages 2001/03/14
[#12651] Re: police warns you -- Perl is dangerous!! — pete@... (Pete Kernan) 2001/03/14

On 14 Mar 2001 11:46:35 -0800, Leo Razoumov <see_signature@127.0.0.1> wrote:

[#12691] Re: police warns you -- Perl is dangerous!! — "W. Kent Starr" <elderburn@...> 2001/03/15

On Wednesday 14 March 2001 15:40, Pete Kernan wrote:

[#12709] [OFFTOPIC] Re: police warns you -- Perl is dangerous!! — Stephen White <spwhite@...> 2001/03/16

On Fri, 16 Mar 2001, W. Kent Starr wrote:

[#12655] Re: FEATURE REQUEST: 'my' local variables — "Benjamin J. Tilly" <ben_tilly@...>

>===== Original Message From Leo Razoumov <see_signature@127.0.0.1> =====

18 messages 2001/03/14

[#12706] Library packaging — "Nathaniel Talbott" <ntalbott@...>

I have a project that I'm working on that needs to live two different lives,

30 messages 2001/03/16

[#12840] Looking for a decent compression scheme — Dave Thomas <Dave@...>

14 messages 2001/03/19

[#12895] differences between range and array — "Doug Edmunds" <dae_alt3@...>

This code comes from the online code examples for

16 messages 2001/03/20
[#12896] Re: differences between range and array — "Hee-Sob Park" <phasis@...> 2001/03/20

[#12899] Re: differences between range and array — Jim Freeze <jim@...> 2001/03/20

On Tue, 20 Mar 2001, Hee-Sob Park wrote:

[#12960] TextBox ListBox — Ron Jeffries <ronjeffries@...>

Attached is a little Spike that Chet and I are doing. It is a

13 messages 2001/03/20

[#12991] [ANN] Lapidary 0.2.0 — "Nathaniel Talbott" <ntalbott@...>

Well, here's my first major contribution to the Ruby world: Lapidary. It's a

16 messages 2001/03/20

[#13028] mkmf question — Luigi Ballabio <luigi.ballabio@...>

15 messages 2001/03/21

[#13185] Reading a file backwards — "Daniel Berger" <djberg96@...>

Hi all,

21 messages 2001/03/25
[#13197] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

> Hi Dan,

[#13203] Re: Reading a file backwards — Mathieu Bouchard <matju@...> 2001/03/25

On Sun, 25 Mar 2001, Daniel Berger wrote:

[#13210] Re: Reading a file backwards — "Daniel Berger" <djberg96@...> 2001/03/25

"Mathieu Bouchard" <matju@sympatico.ca> wrote in message

[#13374] Passing an array to `exec'? — Lloyd Zusman <ljz@...>

I'd like to do the following:

15 messages 2001/03/31

[#13397] Multidimensional arrays and hashes? — Lloyd Zusman <ljz@...>

Is it possible in ruby to make use of constructs that correspond to

14 messages 2001/03/31

[ruby-talk:12557] Accessing caller of include or extend...

From: "Freeman Pascal" <pascal@...>
Date: 2001-03-13 07:35:06 UTC
List: ruby-talk #12557
Hi,

I'm fairly new to Ruby and OO in general, but have read the pickaxe
book through twice already and have been browsing the mailing list
archives.  I have a couple of questions for the more seasoned Ruby
users.  

First, when creating a module for inclusion by a class, is there
a way to initialize module instance variables being added to the 
including class?

The following does not work (though runs without error) and I now 
understand it's because I'm adding the instance variables to the 
module class not the module I'm creating:

  module ThreeDSpace
    @position = Vector.new ()		# current position
    @vector   = Vector.new ()		# speed and heading

    attr_accessor :position
    attr_accessor :vector
  end

  class MyEntity
    include ThreeDSpace
  end

  ball = MyEntity.new Sphere

  p ball.position				# -> nil
  p ball.vector				# -> nil

  ball.position = Vector.new (0,0,0)
  p ball.position				# -> [Vector: @x=0, @y=0, @z=0]

This seems counter intuitive and surprised me.  I was expecting to
have my instance variables initialized and available to the accessors
much the same way that method variables (@@symbol) are.

I naively tried even adding an "initialize" method to the module
which  didn't work.  How does one initialize module instance 
variables without resorting to defining a method to do so and 
calling it within the class after including the module?

Second, is there a way to determine within the module definition at 
run-time who the including class is (i.e. who called "include")?

I'd like to use modules to implement feature sets that extend
my classes, but don't want to resort to uniquely identifying and
including modules that are tightly coupled to the including class.

  module ThreeDSpace
    switch (self.including_class)		# NO SUCH METHOD!
      with VEEnvironment
	  # Environment extensions here	
      with Entity
        attr_accessor :position		# Vector
	  attr_accessor :velocity		# Vector
    end
  end

  module Simple Gravity
    switch (self.including_class)		# NO SUCH METHOD!!!
      with VEEnvironment
  	def simple gravity (entity)
	    # implementation of simple gravity
	  end

	  VEEnvironment.register_law (simple_gravity)

      with VEEntity
	  attr_accessor :simple_gravity_exempt
    end
  end

  class VEEnvironment
    # Base class for simulated environment

    def register_law (&proc)
      # ...
    end

    def add_entity (entity)
      # ...
    end
  end

  class VEEntity
    # base class for simulated entities
  end

  class MyEnvironment << VEEnvironment
    include ThreeDSpace
    include SimpleGravity
  end

  class MyEntity << VEEntity
    include ThreeDSpace
    include SimpleGravity
  end

  env  = MyEnvironment.new
  ball = MyEntity.new

  env.add_entity ball

The closest I've been able to come to doing this is providing
modules specific to the class doing the inclusion and specifically
including that module within the class.

Ideally, I did like to see something like:

  method SimpleGravity
    extend VEEnvironment
	def simple_gravity (entity)
        # ...
      end
    extend VEEntity
      attr_accessor :simple_gravity_exempt
  end

-Freeman

In This Thread

Prev Next