Eivind Eklund
11/23/2007 8:50:00 AM
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.