MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: If without else

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113030] Re: If without else
  • From: Hugo Touchette <hugo.touchette at googlemail.com>
  • Date: Tue, 12 Oct 2010 04:22:08 -0400 (EDT)
  • References: <i8ukmb$odm$1@smc.vnet.net>

On Oct 11, 10:16 am, Sebastian Schmitt <sschm... at physi.uni-
heidelberg.de> wrote:
> Dear all!
>
> (I recycle my disclaimer.)
>
> I'm new to Mathematica with a background mostly in C++. Many times I
> have the impression that my style is not natural-Mathematica
> (Mathematicaesque so to say).
>
> I have a question to the usage of the If condition.
>
> In[72] := x = 2; b = 3;
>
> In[73] := If[b > 2, x = 10,]; x
>
> Out[73] = 10
>
> In[74] := If[b > 3, x = 20,]; x
>
> Out[74] = 10
>
> Is it good-practice to leave the "else" empty? Is
>
> x := 10 /; b > 2
>
> what I'm looking for?
>
> Thanks in advance,
>
> Sebastian

Dear Sebastian,

The /; notation is for patterns defined with a condition, not
conditional execution (in the sense of programming). For example, with

x:=10/;b>2

you define a delayed replacement (x to be 10) on the condition that
b>2. Here x:=10 is the pattern.

If you want to execute something upon some conditions, then you really
need to use 'If'. For example,

Test[x_] := Module[{},
  Print["Positive"] /; x > 0;
  Print["Even"] /; EvenQ[x];
  ]

doesn't do probably what you expect. What you want is

Test[x_] := Module[{},
  If[x > 0, Print["Positive"]];
  If[EvenQ[x], Print["Even"]];
  ]

I hope this helps.

oguh


  • Prev by Date: Re: Solving a non-linear system to find coefficients in Runge-Kutta method
  • Next by Date: How to solve this differential equation? (harmonic oscillator)
  • Previous by thread: If without else
  • Next by thread: Re: If without else