DMUG-Archiv 2019

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: [Dmug] Smitt-Trigger

Also, wenn man natürlich absichtlich versucht etwas kaputt zu machen,
dann muss man andere Geschütze auffahren. Ich dachte es geht darum eine
lesbare Lösung zu finden, die auch ein Anfänger nachvollziehen kann.

Üblicherweise schützt man keine der eigenen Definitionen in einem
Notebook, weil man ja weiß, was man da treibt und jedem ist klar, dass
eine Neudefinition wahrscheinlich unangenehme Effekte hat.

Wenn man es etwas besser machen will, dann benutzt man eine Closure und
greift auf eine Modul Variable des äußeren Kontextes zu. Danach kann
man sein "f" schützen und erschwert, dass irgendjemand einfach etwas
umdefinieren kann.

Module[{last = 0},
  f[x_ /; x < -0.8 || x > 3.2] := last = 10*Sign[x];
  f[_] := last;
];
SetAttributes[f, {Protected, ReadProtected, Locked}];

Ich hielt diese Lösung allerdings für weniger lehrreich.

Cheers
Patrick


On Sa, 2019-10-26 at 13:01 +0200, Susanne & Udo Krause via demug wrote:
> Sali zusammen,
> 
> das Symbol f3[] muss geschützt werden, weniger elegant aber korrekt:
> 
> In[39]:= Unprotect[f3]
> Clear[f3]
> f3[x_?NumericQ /; x < -0.8 || x > 3.2] := (Unprotect[f3]; f3[] = 10 
> Sign[x]; Protect[f3]; f3[])
> 
> f3[_] := f3[]
> 
> Out[39]= {}
> 
> In[45]:= f3 /@ {-1, 0, 3, 4, 3, 0, -1}
> 
> Out[45]= {-10, -10, -10, 10, 10, 10, -10}
> 
> In[46]:= f3[0]
> 
> Out[46]= -10
> 
> In[47]:= f3[] = "jabber"
> 
> During evaluation of In[47]:= Set::write: Tag f3 in f3[] is
> Protected.
> 
> Out[47]= "jabber"
> 
> In[48]:= f3[0]
> 
> Out[48]= -10
> 
> 
> Schönes Wochende!
> Udo.
> 
> 
> Am 26.10.2019 um 11:45 schrieb Susanne & Udo Krause via demug:
> > 
> > Hätte man tun können:
> > 
> > 
> > In[16]:= (* Patrick Scheibe 25.10.2019
> >                    Ich hätte den letzten Wert ja an das Symbol f 
> > gebunden *)
> > Clear[f2]
> > 
> > f2[x_ /; x < -0.8 || x > 3.2] := f2[] = 10*Sign[x];
> > 
> > f2[_] := f2[]
> > 
> > In[19]:= f2 /@ {-1, 0, 3, 4, 3, 0, -1}
> > 
> > Out[19]= {-10, -10, -10, 10, 10, 10, -10}
> > 
> > In[20]:= f2[] = "jabber"
> > 
> > Out[20]= "jabber"
> > 
> > In[21]:= f2[0]
> > 
> > Out[21]= "jabber"
> > 
> > Grüsse
> > 
> > Udo.
> > 
> > Am 25.10.2019 um 00:31 schrieb Patrick Scheibe via demug:
> > > 
> > > f[x_ /; x < -0.8 || x > 3.2] := f[] = 10*Sign[x];
> > > f[_] := f[]
> > _______________________________________________
> > DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
> > http://www.mathematica.ch/mailman/listinfo/demug
> > Archiv: http://www.mathematica.ch/archiv.html
> _______________________________________________
> DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
> http://www.mathematica.ch/mailman/listinfo/demug
> Archiv: http://www.mathematica.ch/archiv.html

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html