[ Web Proxy ]
URL:
Viewing: https://da.javascript.info/task/calculator-extendable [Back]  [Original]

Opret en lommeregner, der kan udvides
DA

Vi nsker at gre dette open source-projekt tilgngeligt for folk over hele verden.

Hjlp med at overstte indholdet af denne tutorial til dit sprog!

    Sg p Javascript.info:
    Sg i tutorialen:
    Lyst temaMrkt tema
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek
    tilbage til lektionen

    Opret en lommeregner, der kan udvides

    vigtighed: 5

    Opret en konstruktrfunktion Calculator, der skaber udvidelige lommeregner-objekter.

    Opgaven bestr af to dele.

    1. Frst skal du implementere metoden calculate(str), der tager en streng som "1 + 2" i formatet NUMMER operator NUMMER (adskilt af mellemrum) og returnerer resultatet. Den skal forst plus + og minus -.

      Brugseksempel:

      let calc = new Calculator;
      
      alert( calc.calculate("3 + 7") ); // 10
    2. S skal du tilfje metoden addMethod(name, func), der lrer lommeregneren en ny operation. Den tager operatorens name og den to-argument funktion func(a,b), der implementerer den.

      For eksempel, lad os tilfje multiplikation *, division / og potens **:

      let powerCalc = new Calculator;
      powerCalc.addMethod("*", (a, b) => a * b);
      powerCalc.addMethod("/", (a, b) => a / b);
      powerCalc.addMethod("**", (a, b) => a ** b);
      
      let result = powerCalc.calculate("2 ** 3");
      alert( result ); // 8
    • Ingen parenteser eller komplekse udtryk i denne opgave.
    • Tallene og operatoren er adskilt med prcis t mellemrum.
    • Der kan tilfjes fejlhndtering, hvis du nsker det.

    bn en sandbox med tests.

    lsning
    • Vr opmrksom p, hvordan metoderne gemmes. De tilfjes simpelthen til this.methods-egenskaben.
    • Alle tests og numeriske konverteringer udfres i calculate-metoden. I fremtiden kan den udvides til at understtte mere komplekse udtryk.
    function Calculator() {
    
      this.methods = {
        "-": (a, b) => a - b,
        "+": (a, b) => a + b
      };
    
      this.calculate = function (str) {
    
        let split = str.split(' '),
          a = +split[0],
          op = split[1],
          b = +split[2];
    
        if (!this.methods[op] || isNaN(a) || isNaN(b)) {
          return NaN;
        }
    
        return this.methods[op](a, b);
      };
    
      this.addMethod = function (name, func) {
        this.methods[name] = func;
      };
    }

    bn lsningen med tests i en sandbox.


    Web Proxy Viewer  |  New URL  |  Original Page