Re: ReplaceAll in If Statement
- To: mathgroup at smc.vnet.net
- Subject: [mg19463] Re: [mg19448] ReplaceAll in If Statement
- From: "Wolf, Hartmut" <hwolf at debis.com>
- Date: Sat, 28 Aug 1999 15:52:58 -0400
- Organization: debis Systemhaus
- References: <199908250525.BAA24791@smc.vnet.net.>
- Sender: owner-wri-mathgroup at wolfram.com
Tom Compton schrieb: > > In the following sequence I expected z to evaluate to 1 in the > Module. It appears that the test in the module does not > evaluate to either True or False. I don't understand why. > Can anyone explain? > > In[1]:= > opList={a->True}; > > In[2]:= > test[opts___]:=Module[{}, > If[a /. {opts}, z=1, z=2, z=3]; > {a, z} /. {opts}] > > In[3]:= > test[opList] > Out[3]= > {{True,3}} > Tom, you'r right the test doesn't evaluate to True, instead it evaluates to {True}! If you define In[5]:= test2[opts___] := Module[{}, If[a /. opts, z = 1, z = 2, z = 3]; {a, z} /. opts] In[6]:= test2[opList] Out[6]= {True, 1} you'll get what you want (which is the same if you do): In[7]:= test[a -> True] Out[7]= {True, 1} But perhaps you like this In[13]:= Thread[Unevaluated[test[{a -> True, a -> False, a -> "?"}]]] Out[13]= {{True, 1}, {False, 2}, {"?", 3}} yours, hw
- References:
- ReplaceAll in If Statement
- From: "Tom Compton" <comptont@concentric.net>
- ReplaceAll in If Statement