130. LazyMan() を作る
シェアしよう
少し工夫が必要 - accepted / - tried
LazyMan
は食べることと寝ることしかやらないので、lazyです。
LazyMan(name: string, logFn: (log: string) => void)
では渡されるlogFn
を利用して、メッセージをログする。
LazyMan('Jack', console.log)
// Hi, I'm Jack.
eat(food: string)
はできる。
LazyMan('Jack', console.log)
.eat('banana')
.eat('apple')
// Hi, I'm Jack.
// Eat banana.
// Eat Apple.
sleep(time: number)
もできる、秒単位。
LazyMan('Jack', console.log)
.eat('banana')
.sleep(10)
.eat('apple')
.sleep(1)
// Hi, I'm Jack.
// Eat banana.
// (after 10 seconds)
// Wake up after 10 seconds.
// Eat Apple.
// (after 1 second)
// Wake up after 1 second.
sleepFirst(time: number)
では順序問わず、一番高い優先順位でsleepする。
LazyMan('Jack', console.log)
.eat('banana')
.sleepFirst(10)
.eat('apple')
.sleep(1)
// (after 10 seconds)
// Wake up after 10 seconds.
// Hi, I'm Jack.
// Eat banana
// Eat apple
// (after 1 second)
// Wake up after 1 second.
こういうlazyなLazyMan()
を作ってください。