Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
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
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
Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html