Last active
March 30, 2018 08:22
-
-
Save shoveller/f307a975d784486d9dda5fe994741eda to your computer and use it in GitHub Desktop.
커스텀 이터레이터로 구현한 레인지 함수
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function range(start, end, step = 1) { | |
const iterable = { | |
[Symbol.iterator]() { | |
let value = start; | |
const iterator = { | |
next() { | |
value = value + step; | |
let done = value === end + step; | |
if (done) { | |
value = null; | |
} | |
const iteratorResult = { done, value }; | |
return iteratorResult; | |
} | |
}; | |
return iterator; | |
} | |
}; | |
return iterable; | |
} | |
for (const val of range(0, 2)) { | |
console.log(val); // 0 1 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
이 커스텀 이터레이터는 제너레이터 함수와 yield 키워드를 사용하면 보다 간략하게 구현할 수 있다.