⭐️
# 題目敘述
Write a function createCounter
. It should accept an initial integer init
. It should return an object with three functions.
The three functions are:
increment()
increases the current value by 1 and then returns it.decrement()
reduces the current value by 1 and then returns it.reset()
sets the current value toinit
and then returns it.
# Example 1
Input: init = 5, calls = [“increment”,“reset”,“decrement”]
Output: [6,5,4]
Explanation:
const counter = createCounter(5);
counter.increment(); // 6
counter.reset(); // 5
counter.decrement(); // 4
# Example 2
Input: init = 0, calls = [“increment”,“increment”,“decrement”,“reset”,“reset”]
Output: [1,2,1,0,0]
Explanation:
const counter = createCounter(0);
counter.increment(); // 1
counter.increment(); // 2
counter.decrement(); // 1
counter.reset(); // 0
counter.reset(); // 0
# Solution
/** | |
* @param {integer} init | |
* @return { increment: Function, decrement: Function, reset: Function } | |
*/ | |
var createCounter = function(init) { | |
let tmp = init; | |
increment = () => ++tmp; | |
decrement = () => --tmp; | |
reset = () => tmp = init; | |
return {increment, decrement, reset}; | |
}; | |
/** | |
* const counter = createCounter(5) | |
* counter.increment(); // 6 | |
* counter.reset(); // 5 | |
* counter.decrement(); // 4 | |
*/ |
type ReturnObj = { | |
increment: () => number, | |
decrement: () => number, | |
reset: () => number, | |
} | |
function createCounter(init: number): ReturnObj { | |
let tmp: number = init; | |
const increment = (): number => ++tmp; | |
const decrement = () => --tmp; | |
const reset = (): number => tmp = init; | |
return {increment, decrement, reset}; | |
}; | |
/** | |
* const counter = createCounter(5) | |
* counter.increment(); // 6 | |
* counter.reset(); // 5 | |
* counter.decrement(); // 4 | |
*/ |