ho questa classe razionale che ha un metodo per ogni operazione (aggiungere, mult ecc)Attiva una classe razionale per gestire operatori matematici
function Rational(nominator, denominator){
this.nominator = nominator;
this.denominator = denominator || 1;
}
Rational.prototype = {
mult: function(that) {
return new Rational(
this.nominator * that.nominator,
this.denominator * that.denominator
);
},
print: function() {
return this.nominator + '/' + this.denominator;
}
};
var a = new Rational(1,2),
b = new Rational(3);
console.log(a.mult(b).print()); // 3/2
Posso renderlo più "naturale" per esempio abilitare console.log(a * b)
?
JavaScript non supporta l'overloading degli operatori. Puoi però sostituire 'print()' con 'toString'. – georg
Potrebbe funzionare una qualche forma di sostituzione di eval e stringa, come ad esempio: console.log (Funzione ("a * b" .replace ("* b", ". Mult (b) .print()"))) Là sono [uno] (http://stackoverflow.com/a/1390694/1113772) o [due] (http://stackoverflow.com/questions/14147290/how-can-i-set-loop-imacros-by- javascript) domande su macro che potrebbero essere d'aiuto. –