Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

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

Search the Archive

Re: Variable amount of Buttons in Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg92885] Re: Variable amount of Buttons in Mathematica
  • From: David Bailey <dave at Remove_Thisdbailey.co.uk>
  • Date: Fri, 17 Oct 2008 05:22:00 -0400 (EDT)
  • References: <gcscrf$8l3$1@smc.vnet.net> <gcv77d$ds9$1@smc.vnet.net> <gd4djf$be8$1@smc.vnet.net>

magma wrote:
> On Oct 13, 12:17 pm, "sjoerd.c.devr... at gmail.com"
> <sjoerd.c.devr... at gmail.com> wrote:
>> It can be done with:
>>
>> array = {1, 2, 3, 4, 5};
>> Row[Table[
>>   With[{n = n},
>>    Button[array[[n]], Print[n], ImageSize -> {50, 50}]], {n, 1,
>>    Length[array], 1}]]
>>
>> This uses the somewhate puzzling With[{n = n} construction, which
>> replaces every occurance of the *variable* n (which doesn't make sense
>> after the Table command has finished) with the succesive *values* it
>> had during the table execution.
>>
>> Cheers -- Sjoerd
> 
> Indeed Sjoerd, it is a very puzzling construct especially for a
> newcomer like SDY.
> I was amazed to see that all the "With" answers used n=n .
> If this were a class exercise I would have suspected copying :-)
> Then Eric mentioned that this was shown in the Button documentation
> (they use i=i).
> Ah, ah, so it was indeed copying :-)
> 
> The point is: n=n is not necessary and frankly not recommended.
> Mathematica syntax colouring shows the 2 n's with slightly different colours,
> but it is hard to tell and not very illuminating for a newbie.
> 
> I would suggest the following syntax:
> 
>  array = {1, 2, 3, 4, 5};
> Column[{Row[
>    Table[With[{k = n},
>      Button[array[[k]], Print[k], ImageSize -> {50, 50}]], {n,
>      Length[array]}]]}]
> 
> 
> where I use With[{k=n}, .....
> Here the concept is clearer: each element in the table is built using
> the "With-local" k.
> In turn, k takes the current value of the "Table-looping" n.
> 
> 
> 
> 
Perhaps some people are like me. I write such code without the 'With', 
and it doesn't work, so I use an expletive and add the 'With' without 
changing the name of the variable :)

David Bailey
http://www.dbaileyconsultancy.co.uk


  • Prev by Date: Re: What is the compatibility guide?
  • Next by Date: solving systems of transcendental equations
  • Previous by thread: Re: Variable amount of Buttons in Mathematica
  • Next by thread: mathematica and CGT