Alternative zu eval() für arithmetische Berechnungen
bearbeitet von
Die mathematische Operation Substraktion kenne ich nicht - ist das Rechnen mit Teilstrings? ;-)
Um die gewünschten Ergebniseigenschaften zu erhalten, wirst Du bei Disvision und Substraktion nicht `a` und `b` zufällig bestimmen müssen, sondern `b` und `erwartet`, und a daraus rückrechnen. D.h. dein Rückgabeobjekt muss erweitert werden, so dass es auch die Operanden enthält. Ob du die `rand()` Aufrufe dann auch in die Methoden verlegst, oder ob Du a und b nach wie vor übergibst, ist wohl Geschmackssache
Den Ansatz mit `opMap.keys()` hatte ich zuerst auch (naja, eigentlich nicht, ich war auf `getOwnPropertyNames` verfallen, was in diesem Fall zum gleichen Ergebnis geführt hätte; aber keys() ist natürlich sinnvoller). Problem ist nur, dass `opMap.keys()` auch 'random' enthält, d.h. man läuft Gefahr, dass die Random-Operation sich selbst auswählt. Die Chance dafür ist natürlich gering ($$(\frac{1}{5})^k$$ für k-mal nacheinander), aber es widerstrebt mir irgendwie, korrekte Programmfunktion auf Wahrscheinlichkeiten aufzubauen bzw. eine unabsichtliche Rekursion einfach hinzunehmen. Das unit-testet sich so schlecht...
_Rolf_