์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ, ๋ฐ˜๋ณต์ž(iterator) ์ถ”๋ก ๊ณผ ๋ช…์‹œ

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ, ๋ฐ˜๋ณต์ž(iterator) ์ถ”๋ก ๊ณผ ๋ช…์‹œ

    Generator ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” Generator๊ฐ€ yield๋ฅผ ํ†ตํ•ด ๋ฐฉ์ถœํ•œ ๊ฐ’์„ ํ† ๋Œ€๋กœ ๋ฐ˜๋ณต์ž์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•œ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜ ๋ฐ˜๋ณต์ž(iterator)์™€ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์ƒ์ƒ๊ด€๊ณ„๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋กœ ๊ฐ’์˜ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฐ˜๋ณต์ž๋กœ ์ƒ์„ฑ๋œ ๊ฐ’์„ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ดํ„ฐ๋Ÿฌ๋ธ”(iterable;๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š”)Symbol.iterator ๋ผ๋Š” ํ”„๋กœํผํ‹ฐ(๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜)๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ๊ฐ์ฒด ๋ฐ˜๋ณต์ž(iterator)next๋ผ๋Š” ๋ฉ”์„œ๋“œ(value, done ๋‘ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜)๋ฅผ ์ •์˜ํ•œ ๊ฐ์ฒด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ดํ„ฐ๋Ÿฌ๋ธ” ๋ฐ˜๋ณต์ž(IterableIterator)๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ์ง€์›ํ•œ๋‹ค. //๋‹ค์Œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด a์— b๋ฅผ, b์— a+b๋ฅผ..

    [AWS EC2] ์ธ์Šคํ„ด์Šค์—์„œ ํ†ฐ์บฃ์ด ์ž˜ ์„ค์น˜๋˜์ง€ ์•Š๋Š” ๊ฑด

    [JSP]์œˆ๋„์šฐ์—์„œ ํ†ฐ์บฃ ์„ค์น˜์™€ ํ†ฐ์บฃ ์„œ๋ฒ„ ๊ตฌ๋™ :: Kamang's IT Blog (tistory.com) [JSP]์œˆ๋„์šฐ์—์„œ ํ†ฐ์บฃ ์„ค์น˜์™€ ํ†ฐ์บฃ ์„œ๋ฒ„ ๊ตฌ๋™ ์œˆ๋„์šฐ์—์„œ ํ†ฐ์บฃ ์„ค์น˜์™€ ๊ตฌ๋™ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์‚ฌ์‹ค ๋ฆฌ๋ˆ…์Šค๋‚˜ ๋งฅ์€ ์œˆ๋„์šฐ์— ๋น„ํ•˜๋ฉด ํ›จ์”ฌ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•  ํ•„์š”๋Š” ์—†์„๊ฒƒ ๊ฐ™๋‹ค. ๋จผ์ € ํ†ฐ์บฃ ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ„๋‹ค. ๊ทธ ๋‹ค์Œ ์˜† kamang-it.tistory.com

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ปคํ”ผ๋จธ์‹  ํด๋ž˜์Šค๋งŒ๋“ค๊ธฐ ์‹ค์Šต

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ปคํ”ผ๋จธ์‹  ํด๋ž˜์Šค๋งŒ๋“ค๊ธฐ ์‹ค์Šต

    //์ปคํ”ผ๋จธ์‹  ๋งŒ๋“ค๊ธฐ type CoffeeCup = { orderShot: number; }; class coffeeMachine { private static ONE_SHOT_CAPSULE: number = 3; private static ONE_CUP_WATER: number = 10; static makeMachine(beans: number, water: number): coffeeMachine { return new coffeeMachine(beans, water); } constructor(private capsule: number = 3, private water: number = 10) {} makeCoffee(orderShot: number): CoffeeCup { if (this.caps..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์ง€์›, ๋ช…์‹œ

    ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ’์„ ์ƒ์‚ฐํ•˜๋Š” ์†๋„๋„ ์ •๊ตํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. //๋‹ค์Œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด a์— b๋ฅผ, b์— a+b๋ฅผ ํ•œ๋ฒˆ์— ๋‹ค์‹œ ํ• ๋‹นํ•œ๋‹ค. function* createFibonacciGenerator() { let a = 0; let b = 1; while (true) { yield a; [a, b] = [b, a + b]; } } let fiboancciGenerator = createFibonacciGenerator(); //IterableIterator console.log(fiboancciGenerator.next()); //{ value: 0, done: false } console.l..

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ

    Generator ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ’์„ ์ƒ์‚ฐํ•˜๋Š” ์†๋„๋„ ์ •๊ตํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ๊ฒŒ์œผ๋ฅด๊ฒŒ ๋™์ž‘(์ฆ‰, ์†Œ๋น„์ž๊ฐ€ ์š”์ฒญํ•ด์•ผ๋งŒ ๋‹ค์Œ ๊ฐ’์„ ๊ณ„์‚ฐ)ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์˜ ๋ชฉ๋ก ์ƒ์„ฑํ•˜๊ธฐ ๊ฐ™์€ ๊นŒ๋‹ค๋กœ์šด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.) ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค. //ํ•จ์ˆ˜๋ช… ์•ž์— ๋ถ™์€ * ์€ ์ด ํ•จ์ˆ˜๊ฐ€ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์ž„์„ ์˜๋ฏธํ•œ๋‹ค. //์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ดํ„ฐ๋Ÿฌ๋ธ” ๋ฐ˜๋ณต์ž๊ฐ€ ๋ด”ํ™˜ function* createFibonacciGenerator() { let a = 0; let b = 1; while (true) { yield a; [a, b] = [b, a + b]; } } //๋‹ค์Œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด a์— b๋ฅผ, b์—..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] this ๊ด€๋ จ ์˜ค๋ฅ˜

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] this ๊ด€๋ จ ์˜ค๋ฅ˜

    function fancyDate() { return console.log( `${this.getDate()} / ${this.getMonth()} / ${this.getFullYear()}` ); } fancyDate.call(new Date()); src/index.ts:74:8 - error TS2683: 'this' implicitly has type 'any' because it does not have a type annotation. 74 `${this.getDate()} / ${this.getMonth()} / ${this.getFullYear()}` ~~~~ src/index.ts:74:28 - error TS2683: 'this' implicitly has type 'any' becau..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] class์˜ getter์™€ setter

    class User { firstName: string; lastName: string; fullName: string; constructor(firstName: string, lastName: string) { this.firstName = firstName; this.lastName = lastName; this.fullName = `${firstName} ${lastName}`; } } let user = new User("Steve", "Jobs"); console.log(user.fullName); //Steve Jobs console.log(user.firstName); //Steve user.firstName = "Jimmy"; console.log(user.fullName); //Steve..