[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

calling my framework

Mario Ruiz

11/22/2007 1:12:00 PM

I'm developing a framework but I would like to call the classes as I was
in Java.
An example:
requiere 'myAclasses'
requiere 'myBclasses'
vA=myclass22.new()
vB=myclass55.new()

The problem is that I don't know where are these classes and I would
like to call them something like this:
vA=myAclasses.myclass22.new()
vB=myBclasses.myclass55.new()

Is this possible???
How can I do it?

Thans in advance.
--
Posted via http://www.ruby-....

2 Answers

Eivind Eklund

11/23/2007 8:50:00 AM

0

On Nov 22, 2007 2:12 PM, Mario Ruiz <mario@betware.com> wrote:
> I'm developing a framework but I would like to call the classes as I was
> in Java.
> An example:
> requiere 'myAclasses'
> requiere 'myBclasses'
> vA=myclass22.new()
> vB=myclass55.new()
>
> The problem is that I don't know where are these classes and I would
> like to call them something like this:
> vA=myAclasses.myclass22.new()
> vB=myBclasses.myclass55.new()
>
> Is this possible???
> How can I do it?

Note that true class names has to start with an uppercase letter; I've
compensated for that below.

First, you can do module wrapping (namespacing):

module MyAclasses
class Myclass22
end
end

and call as
MyAclasses::Myclass22.new

Second, you could do this using a method that returns a class object.

In other words, something like

class MyAClassContainer
def myclass22
return MyClass22
end
end
myAclasses = MyAClassContainer.new # (or any other factory method)
mya = myAclasses.myclass22.new

The latter technique can be useful if your hierarchy and what you want
to produce change at runtime. It seems like very many levels of
indirection, though, so I would think carefully of whether it is
necessary. (Each level of indirection tends to make things harder to
grasp/think about/debug.)

Eivind.

Mario Ruiz

11/23/2007 9:55:00 AM

0

The first seems to be the solution to my problem, I didn't realize
before.
Even you can add more modules:
module Mod1
module Mod2
class Clas1
end Class
end
end

a=Mod1::Mod2::Clas1.new()

That's great!!!

Thank you very much.
--
Posted via http://www.ruby-....