Gennady Bystritsky
8/12/2006 6:40:00 AM
> -----Original Message-----
> From: Morton Goldberg [mailto:m_goldberg@ameritech.net]
> Sent: Friday, August 11, 2006 9:21 PM
> To: ruby-talk ML
> Subject: Re: Beginner's question: assigning same value to
> many variables
>
> I presume you want each variable initialized to a _different_ empty
> string. If so, I can't think of an easy way to do it using local
> variables. That may just go to show my lack of ruby smarts. However,
> it's not too hard to initialize a group of instance variables to
> different empty strings in one line of code. Consider:
>
> #! /usr/bin/ruby -w
>
> class Foo
> def initialize
> %w[@a @b @c @d].each {|v| instance_variable_set(v, '')}
> end
> end
>
> foo = Foo.new
> p foo #=> #<Foo:0x2556c @c="", @b="", @a="", @d="">
>
> And the following will work for global variables.
>
> %w[$a, $b, $c, $d].each {|v| eval("%s=String.new" % v)}
> p [$a, $b, $c, $d] #=> ["", "", "", ""]
>
> But for local variables, I don't know.
How about this:
irb(main):001:0> a, b, c = Array.new(3) { '' }
=> ["", "", ""]
irb(main):002:0> a
=> ""
irb(main):003:0> b
=> ""
irb(main):004:0> c
=> ""
irb(main):005:0> a.object_id
=> 203740
irb(main):006:0> b.object_id
=> 203730
irb(main):007:0> c.object_id
=> 203720
irb(main):008:0>
It will work for global and instance variables as well.
Best,
Gennady.
>
> Regards, Morton
>
> On Aug 11, 2006, at 7:12 PM, Alex Khere wrote:
>
> > I'm just starting out in programming, using Ruby to learn.
> >
> > I'm trying to write a short program that will use a handful of
> > variables, and I want to be sure that all of the variables
> start with
> > the value '' (strings of zero length).
> >
> > Is there a way to list all of the variables on a single line and set
> > them to the same value? I tried using commas to seperate, but that
> > didn't work.
> >
> > I also tried creating an array with all of the variable
> names and then
> > using "arrayname.each do |name|" to cycle through the
> assignment, but
> > since the varibles hadn't been defined, I got an "undefined local
> > variable or method" error (at least, I think that's why I got an
> > error).
>
>
>