|
[Date Index]
[Thread Index]
[Author Index]
Re: Newbie Programming question
- To: mathgroup at smc.vnet.net
- Subject: [mg53443] Re: [mg53436] Newbie Programming question
- From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
- Date: Wed, 12 Jan 2005 03:41:13 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
>-----Original Message-----
>From: Kerry Kim [mailto:kjkim at u.washington.edu]
To: mathgroup at smc.vnet.net
>Sent: Tuesday, January 11, 2005 7:32 AM
>To: mathgroup at smc.vnet.net
>Subject: [mg53443] [mg53436] Newbie Programming question
>
>Hello,
>
>Is there any way in Mathematica to store/assign a value to a
>variable whose name is in a string? In other words something
>like this:
>
>i = 17;
>foo="var" + ToString[i];
>SomeFunctionThatConvertsStringToSymbolName[foo] = 17;
>
>and then assign some value (say, 23) to the variable whose
>name is contained in the foo string? (i.e. var17=23)
>
>Thanks!
>
>
Kerry,
This is not quite so easy, and for the beginning I'd not recommend to
persue such ideas (there are clearer choices for indirection). However,
you might like to observe this:
In[1]:= i = 17;
fooString = "var" <> ToString[i];
In[3]:= fooSym = Symbol[fooString]
Out[3]= var17
In[4]:= Evaluate[fooSym] = 17
Out[4]= 17
In[5]:= var17
Out[5]= 17
Now
In[6]:= MakeExpression[fooString]
Out[6]= HoldComplete[var17]
In[7]:= Unevaluated @@ MakeExpression[fooString]
Out[7]= Unevaluated[var17]
In[8]:=
With[{variable = Unevaluated @@ MakeExpression[fooString]}, variable =
23]
Out[8]= 23
In[9]:= var17
Out[9]= 23
In[10]:= fooString // InputForm
Out[10]//InputForm= "var17"
Another possibility would be to work with unevaluated symbols as values
(to be referenced):
In[16]:= Quit[]
In[1]:= i = 17;
fooString = "var" <> ToString[i];
In[3]:=
(fooSym = Unevaluated@Unevaluated[#]) &@ Symbol[fooString]
Out[3]= Unevaluated[var17]
In[4]:= ?fooSym
Global`fooSym
fooSym = Unevaluated[var17]
In[5]:= (# = 17) &@ fooSym
Out[5]= 17
In[6]:= var17
Out[6]= 17
In[7]:= (# = 23) &@ fooSym
Out[7]= 23
In[8]:= var17
Out[8]= 23
In[9]:= fooSym
Out[9]= Unevaluated[var17]
--
Hartmut Wolf
Prev by Date:
Newbie Limit problem
Next by Date:
Re: [Newbie] Ohm, Ampere, Volt units
Previous by thread:
Re: Newbie Programming question
Next by thread:
Re: Newbie Programming question
|