[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

creating and naming variables dynamic

Tarscher

4/28/2008 3:03:00 PM

Hi all,

I want to create a variable dynamic. I have defined some classes and
depending on data I get from a database I need to construct an object
eg:

now I do

if type=="car"
variab = Car.new
elsif type="boat"
variab = Boat.new
end

can I do something like
variab = Instance.new(type)


Following this: can I give dynamic variablenames?
now I do
if type=="car"
car_string = Car.new
elsif type="boat"
boat_string = Boat.new
end

can I do something like
dynamicpart_string = Instance.new(type)

Regards,
Stijn
4 Answers

David A. Black

4/28/2008 3:47:00 PM

0

Hi --

On Tue, 29 Apr 2008, Tarscher wrote:

> Hi all,
>
> I want to create a variable dynamic. I have defined some classes and
> depending on data I get from a database I need to construct an object
> eg:
>
> now I do
>
> if type=="car"
> variab = Car.new
> elsif type="boat"
> variab = Boat.new
> end
>
> can I do something like
> variab = Instance.new(type)
>
>
> Following this: can I give dynamic variablenames?
> now I do
> if type=="car"
> car_string = Car.new
> elsif type="boat"
> boat_string = Boat.new
> end
>
> can I do something like
> dynamicpart_string = Instance.new(type)

Fred Cheung has answered this post for you on the Rails mailing list.


David

--
Rails training from David A. Black and Ruby Power and Light:
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
INTRO TO RAILS June 24-27 London (Skills Matter)
See http://www.r... for details and updates!

Peter Szinek

4/28/2008 4:51:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

if type can be either 'car' or 'boat' i.e. lowercase strings:

my_class = Object.const_get(type.capitalize)

and then

my_class.new

etc.

alternatively, you can look into active_support, where you have stuff
like

>> "string".classify.constantize.new("aa")
=> "aa"

HTH,
Peter
___
http://www.rubyra...
http://s...

On Apr 28, 2008, at 5:05 PM, Tarscher wrote:

> Hi all,
>
> I want to create a variable dynamic. I have defined some classes and
> depending on data I get from a database I need to construct an object
> eg:
>
> now I do
>
> if type=="car"
> variab = Car.new
> elsif type="boat"
> variab = Boat.new
> end
>
> can I do something like
> variab = Instance.new(type)
>
>
> Following this: can I give dynamic variablenames?
> now I do
> if type=="car"
> car_string = Car.new
> elsif type="boat"
> boat_string = Boat.new
> end
>
> can I do something like
> dynamicpart_string = Instance.new(type)
>
> Regards,
> Stijn
>


Robert Klemme

4/28/2008 4:57:00 PM

0

On 28.04.2008 17:03, Tarscher wrote:
> Hi all,
>
> I want to create a variable dynamic. I have defined some classes and
> depending on data I get from a database I need to construct an object
> eg:
>
> now I do
>
> if type=="car"
> variab = Car.new
> elsif type="boat"
> variab = Boat.new
> end
>
> can I do something like
> variab = Instance.new(type)

More options

factory = {
"car" => Car,
"boat" => Boat,
}

var = factory[type].new

> Following this: can I give dynamic variablenames?
> now I do
> if type=="car"
> car_string = Car.new
> elsif type="boat"
> boat_string = Boat.new
> end
>
> can I do something like
> dynamicpart_string = Instance.new(type)

Better use a Hash for this

vars = {}
vars[type] = factory[type].new

Cheers

robert

bermonruf

4/29/2008 2:23:00 AM

0

[Note: parts of this message were removed to make it a legal post.]

You can try methods instead of dynamic variables, but the best option is the
one above with hash.

self.class.send(:define_method, type){Object.const_get(type.capitalize);}
>

--
Bernardo Rufino