实现一个calculate

# 实现一个calculate

class Calculate {
  constructor(value) {
 
  }
  add(value) {

  }
  subtract(value) {
   
  }
  result() {
   
  }
}

const cal = new Calculate(50);
console.log(cal.add(1).subtract(5).add(1000).subtract(5000).result()); 
结果是-3954

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  1. 加一 状态变为 Calculate { value: 51, state: 'pending' }
  2. 减5 Calculate { value: 46, state: 'pending' }
  3. 加1000 Calculate { value: 1046, state: 'pending' }
  4. 减5000 Calculate { value: -3954, state: 'pending' }
  5. -3954

答案:

class Calculate {
  constructor(value) {
    this.value = value;
    this.state = "pending";
  }
  add(value) {
    if (this.state === "pending") {
      return new Calculate(this.value + value);
    } else {
      throw "error";
    }
  }
  subtract(value) {
    if (this.state === "pending") {
      return new Calculate(this.value - value);
    } else {
      throw "error";
    }
  }
  result() {
    this.state = "success";
    return this.value;
  }
}

const cal = new Calculate(50);
console.log(cal.add(1).subtract(5).add(1000).subtract(5000).result());

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
上次更新: 2022/7/26 下午2:33:39