[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Determine "owning" class?

dkmd_nielsen

3/9/2008 3:58:00 PM

class A
end

class C
def initialize
x = [A.new,A.new]
end

def template
x
end
end

Is it possible for an instance of A to determine the instance of C
that instantiated it?

The application I'm working on has a class named Template that
contains an array of Blocks. What I would like to do is have an
instance of Block reference back to Template's array so that it can
search for a particular sibling block in the array. Is the structure
built incorrectly? (It's too late to rebuild at this time.)

Thanks,
dvn
6 Answers

Ken Bloom

3/9/2008 4:58:00 PM

0

On Sun, 09 Mar 2008 08:58:06 -0700, dkmd_nielsen wrote:

> class A
> end
>
> class C
> def initialize
> x = [A.new,A.new]
> end
>
> def template
> x
> end
> end
>
> Is it possible for an instance of A to determine the instance of C that
> instantiated it?
>
> The application I'm working on has a class named Template that contains
> an array of Blocks. What I would like to do is have an instance of
> Block reference back to Template's array so that it can search for a
> particular sibling block in the array. Is the structure built
> incorrectly? (It's too late to rebuild at this time.)
>
> Thanks,
> dvn

class A
def initialize owner
@owner=owner
end
end

class C
def initialize
x = [A.new(self),A.new(self)]
end

def template
x
end
end

--
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu...

Pit Capitain

3/10/2008 10:45:00 PM

0

2008/3/9, dkmd_nielsen <donn@cmscms.com>:
> The application I'm working on has a class named Template that
> contains an array of Blocks. What I would like to do is have an
> instance of Block reference back to Template's array so that it can
> search for a particular sibling block in the array.

Where are the blocks created? If they are created inside an instance
of the Template class, then you should be able to get at it from the
block:

class Template
def initialize
@blocks = [lambda{}, lambda{}]
end
attr_reader :blocks
end

t1 = Template.new
b = t1.blocks.first
t2 = eval("self", b)
t1 == t2 # => true

Regards,
Pit

Ken Bloom

3/11/2008 3:47:00 PM

0

On Mon, 10 Mar 2008 17:44:41 -0500, Pit Capitain wrote:

> 2008/3/9, dkmd_nielsen <donn@cmscms.com>:
>> The application I'm working on has a class named Template that
>> contains an array of Blocks. What I would like to do is have an
>> instance of Block reference back to Template's array so that it can
>> search for a particular sibling block in the array.
>
> Where are the blocks created? If they are created inside an instance of
> the Template class, then you should be able to get at it from the block:
>
> class Template
> def initialize
> @blocks = [lambda{}, lambda{}]
> end
> attr_reader :blocks
> end
>
> t1 = Template.new
> b = t1.blocks.first
> t2 = eval("self", b)
> t1 == t2 # => true
>
> Regards,
> Pit

A block in his question isn't the same as a ruby syntactic block. I think
he means a block of content of a web page.

--Ken



--
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu...

Pit Capitain

3/11/2008 6:57:00 PM

0

2008/3/11, Ken Bloom <kbloom@gmail.com>:
> A block in his question isn't the same as a ruby syntactic block. I think
> he means a block of content of a web page.

Ken, how do you create (quoting the OP) "an array of Blocks" with
syntactic blocks?

Regards,
Pit

Ken Bloom

3/12/2008 1:33:00 PM

0

On Tue, 11 Mar 2008 13:56:49 -0500, Pit Capitain wrote:

> 2008/3/11, Ken Bloom <kbloom@gmail.com>:
>> A block in his question isn't the same as a ruby syntactic block. I
>> think
>> he means a block of content of a web page.
>
> Ken, how do you create (quoting the OP) "an array of Blocks" with
> syntactic blocks?

That's what you just did, creating an array of empty lambdas.

He defined (somewhere)
class Block
...
end

you instead, filled the array with objects of class Proc, which carry
bindings and you can identify self from a Proc. You can't do the same for
Block, the way I have defined it above.

--Ken

--
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu...

Pit Capitain

3/12/2008 4:21:00 PM

0

2008/3/12, Ken Bloom <kbloom@gmail.com>:
> He defined (somewhere)
> class Block
> ...
> end

Ah, finally I see what you mean. Yes, you could be right that the OP
was doing something like this. Sorry, I had problems to dissociate the
word "block" from Ruby's blocks here on ruby-talk...

Thanks,
Pit