๐ถ๐ฝ ๋จ๊ณ
learnyounode ํ์ฌ
ํฐ๋ฏธ๋:
learnyounode
๋ฉ๋ด๋ฅผ ๋ค์ ์ด๊ณ ๋ ๋ฒ์งธ ๋์ ์ ์ ํํฉ๋๋ค.์ ํ์ผ ๋ง๋ค๊ธฐ
์์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์์ ์ํํฉ๋๋ค.
touch baby-steps.js
๊ฐ์
console
.ํ๋ก์ธ์คargv
node
๋ฅผ ์ฌ์ฉํ์ฌ ์คํํฉ๋๋ค.๋์ฒด๋ก๊ทธ๋ฅํ๋ก์ธ์ค๐ผ, ๊ทธ๋ฌ๋ ๋์ ๋ชจ๋ธ๋ง์ผ๋ก์ ์ฐ๋ฆฌ๋ ์ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ข
๐๊ทธ์ค ํ๋๐s: process
.argv
์ฝ๋๋ฅผ ํ
์คํธ ์คํํฉ๋๋ค.์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌผ์ ๋ฐ๋ณต์ ์ผ๋ก ํ
์คํธํ๊ณ ์ด ๊ณผ์ ์์ ๊ฐ๋
์ ํ์ํ ๊ฒ์ด๋ค.ํ์ผ์ ์ ๋ ฅ:
learnyounode run baby-steps.js
- console.log(process.argv)
์ log
๊ณผ ์ ์ฌํ์ง๋ง info
๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ผ๋ก ๊ด์ฌ์ ๊ฐ์ง์ง ์๋๋ค๋ ์์ ๋ฉ์์ง Source ๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋น์
log
์ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค.[
'/usr/local/Cellar/node/14.14.0/bin/node',
'/Users/codefinity/Code/Lurn/nodeschool/learnyounode/baby-steps.js',
'9',
'95'
]
์ด๊ฒ์ ์์กฐ๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ํ์์ learnyounode run baby-steps.js
[
์ด๊ธฐ ๋๋ฌธ์ ์์กฐ๋ผ๋ ๊ฒ์ ์๋ค.์์ ๋ ์์ (์์๋ง๋ค
]
๋ก ๊ตฌ๋ถ๋จ) ๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ผ๋ก ๊ด์ฌ์ ๊ฐ์ง์ง ์๋๋ค.๋์ฒ๋ผC๐, ๊ทธ๊ฒ์ ๋จ์ง ,
๊ณผ ์ฐ๋ฆฌ๊ฐ ์ฒ๋ฆฌํ๊ณ ์๋ ํ์ผ์ ๋ํ ์ ๋ณด์ผ ๋ฟ์ด๋ค๐๐ฝโโ๏ธ.๋ค์ ๋ ์์๋
node
์์ ์ ๊ณตํ ์ซ์์ธ ๊ฒ ๊ฐ์ต๋๋ค.learnyounode
๋ ์ฐ๋ฆฌ๊ฐ process.argv
์์ ๋ช
๋ นํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฝ๋ ๋ฐฉ์์ด๋ค.์ด ์ ์์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ์์ ์คํํ๊ธฐ๋ง ํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
node
(์๊ฐํด ๋ณด๋ฉด ์ฐ๋ฆฌ๋ console.info(process.argv[2] + process.argv[3])
๋ถํฐ ์์๋ ๋์งํธ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ทธ๋ฃน์ ์์์ ์ ๊ทผํ ์ ์๋ค.)ํ์ง๋ง์ด๊ฒ์ ๊ทธ๋ค์ง ์จ๊ฑดํ์ง ์๋ค.์ฐ๋ฆฌ๋ ์๋์ด ๋ณํ ์ ์๋ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐ์ ์ ์์ด์ผ ํ๋ค.
์์กฐ ๋ถํด 0
const [_, __, ...numbers] = process.argv;
console.log(numbers);
์ด ์ฝ๋ ํ
์คํธ: argv
.๋๋ ๋ฐ๋์ ์ด๋ฐ ๊ฒ์ ๋ณด์์ผ ํ๋ค. learnyounode run baby-steps.js
.๋ฌด์จ ์ผ๐ค?ํด์ฒดํ๋ค
[ '11', '95', '58' ]
, ๋ฌผ๋ก JS์ ์ฐ๋ฆฌ๊ฐ ๋ณ์๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ์ฑ๋ช
ํฉ๋๋ค.๋ค์์ผ๋ก ์ฐ๋ฆฌ๋ const
๋ฅผ ๋ณด์๋ค.์ด๊ฒ์ ํจํด ๋ถํด์
๋๋ค.์ฐ๋ฆฌ๋ [_, __, ...numbers] = = process.argv
๊ทธ๋ฃน์์ ์์ธ๋ณ๋ก ๊ฐ์ ์ถ์ถํ๊ณ ์์ต๋๋ค.๋์ด์ผ๋ณด๋ฉด ์ฐ๋ฆฌ๋
process.argv
์ ๋ ๋ฒ์งธ ์ง์์ ๊ด์ฌ์ด ์๋ค๐๐ฝ. ์ด๊ฒ์ด ๋ฐ๋ก process.argv
๊ณผ_
์ด๋ค.๋๋ ๋ค๊ฐ ์ํ๋ ์ด๋ฆ์ ๊ฑฐ๊ธฐ์ ๋์ ์ ์์ง๋ง, ์ด ๋ฐ์ค์ ์ฐ๋ฆฌ๊ฐ ๋ณ์๋ฅผ ๋ฒ๋ฆฌ๊ณ ์๋ค๋ ๊ฒ์ ๋ํ๋ด๋ ๊ด๋ก์ด๋ค.๋ฐ๋ผ์ __
๊ณผargv[0]
-๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๋ฆฌ๋ ๋ฌด๊ด์ฌํ ์ผ์ด ๋ ๊ฒ์ด๋ค.์ฐ์ฐ์ ๋ฐฐ์ด
๋ค์์ผ๋ก ์ฐ๋ฆฌ๋
argv[1]
๋ฅผ ๋ณด์๋ค.์ด๊ฒ์ ...
์์กฐ์ ์กด์ฌํ๋ ๋๋จธ์ง ๊ฐ (2๊ฐ๋ 1000๊ฐ๋ ) ์ ๋ถ์ฐํ๊ณ argv
์ด๋ผ๋ ์๋ก์ด ์์กฐ์ ์์งํ๊ธฐ๋ฅผ ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ด์ ์ด๋คnumbers
.๐ ์ฐ๋ฆฌ ํฐ๋ฏธ๋์์์๋กํ๋ค์ซ์ ๊ธฐ๋กํ๊ธฐ (๊ทธ๋ฆฌ๊ณ ์ซ์ ๊ธฐ๋กํ๊ธฐ)
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๋๋จธ์ง ์ฝ๋๋ค.
console.info(
numbers.reduce((total, number) => {
let t = total;
t += Number(number);
return t;
}, 0)
);
์ฐ๋ฆฌ๋ reduce
๋ฅผ ์ฌ์ฉํ๋ค. ์๋ํ๋ฉด reduce
๋ ํ๋์ ์์กฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.numbers
์ค ๋ช ๊ฐ์ ์ซ์๊ฐ ์๋ ์ง ๊ฐ์ ์ฐ๋ฆฌ๋ ๋ฐ๋ณต numbers
ํ์ฌ ๊ฐ ์ซ์ numbers
๋ฅผ ๋ณผ ๊ฒ์ด๋ค.์ฐ๋ฆฌ๋ num
reduce
์ ํ๋์ ์ซ์ numbers
๋ก ๋ฎ์ถ ๊ฒ์ด๋ค.์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ชจ๋ ์ซ์๋ฅผ ๊ตฌํ๋์ง์ ๋ฐฉ์์ด๋ค.total
์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.(total, number) => {
let t = total;
t += Number(number);
return t;
}
์ด๊ฒ์ ์ ๋ฌํ๊ฑฐ๋ ํธ์ถํ๊ณ ์๋ ๋ฆฌ์
ํจ์์
๋๋ค.๐ฒ ๋ค๋ฅธ ํจ์/๋ฉ์๋๋ฅผ ํตํด ๋ฐํ reduce
.์ด ๋ฆฌ์
ํจ์๋ ํ์ดํ ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋ฉ๋๋ค.์์ง ๊ธฐ๋ฅ์ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ ๋ค์์ ์ฐธ์กฐํ์ญ์์ค.JS ํจ์ ์๊ฐ๐ป
๋ฆด๋ฆฌ ๋ฏธ์ค๋ผใป 20๋ 10์15์ผใป 1๋ถ ์ฝ๊ธฐ
#functional
#codenewbie
#javascript
.
์ฐ๋ฆฌ์ ๋ฆฌ์ ํจ์๋ ๋ ๊ฐ์ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ค.
reduce
.์ด๊ฒ๋ค์ ์ฐ๋ฆฌ๋ฅผ ๋ํํ๋ค...์ด๊ฒ๐๐ฝโโ๏ธ ์ด ๋ฐ ๋ฐฐ์ด์ ํ์ฌ ์ซ์์
๋๋ค.let t = total;
t += Number(number);
return t;
ํ์ฌ, ๋ชจ๋ ๊ต์ฒด์ ๋ํด ์ฐ๋ฆฌ๋ (total, num)
total
์ ๋ถ๋ฐฐํ ๊ฒ์ด๋ค. t
๋ณ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํผํ๊ธฐ ์ํด - ๊ฑฑ์ ํ ํ์๊ฐ ์๋ค.)๊ทธ๊ฒ ๋ฌด์จ ๋ป์ธ์ง YDK๊ฐ ์๋ฉด๋ค์์ผ๋ก ์ฐ๋ฆฌ๋ ์ด์
let t = total;
๋ฅผ ์ทจํ๊ณ ์ ๋ฅt
๋ฅผ ๋ํด์ผ ํ๋ค.์ด ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ๋ฌธ์์ด number
(๋ช
๋ น์ค ํ๋ผ๋ฏธํฐ๊ฐ ๋ฌธ์์ด๋ก ๋ํ๋จ) ์ ํ์ number
์ผ๋ก ๋ณํํ๋ค.์ด๊ฒ์ JS์ ์ด๋ฆฌ์์ ์ง๋ ฌ ํ๋์ ๋ง์ ๊ฒ์ด๋ค๐ .๋ง์ง๋ง์ผ๋ก ์ฐ๋ฆฌ
Number
๋ ์๋ก์ด ์ด๊ณ-return
๋ฅผ ๊ฐฑ์ ํ๊ณ ๊ณผ์ ์ ๊ณ์, ๊ฐฑ์ t
๊ณผ total
์์ ๊ฐ๊ฐnumber
์ ๊ต์ฒดํ๋ค.์ซ์ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์(์ต์ )
๋ฆฌ์ ํจ์ ์ดํ์ ์ฐ๋ฆฌ๋
reduce
๋ฅผ ๋ณด์๋ค.๋ ๋ฒ์งธ ๋งค๊ฐ ๋ณ์๋ }, 0)
์์ ์ด๊ธฐํ๋ฉ๋๋ค total
.๊ธฐ์ ์ ์ผ๋ก ๋งํ์๋ฉด, ์ฐ๋ฆฌ๋ ๋ณธ๋ ์ด๋ ๊ฒ ํ์ง ์์ ์ ์์์ง๋ง, ๋๋ ๋งค์ฐ ๋ง์ 0
๊ณคํน์ค๋ฌ์์ ๋ฐ๊ฒฌํ์๋ค๐ ์ด ์ ํ ๊ฐ๋ฅํ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ๋จํ๊ฒ ํฌํจํ์ฌ "total"์ ํ์์ ์ผ๋ก ์ด๊ธฐํํ์ฌ ํผํ ์ ์๋ค์ง๊ธ ๋ค ๊ฐ์ด ์์ด์.๐งโ๐คโ๐ง
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ
reduce
์ ํ๋reduce
์ ๋ด์ธํ๊ธฐ๋ง ํ๋ฉด console.info
์ ์คํํ ์ ์๋ค. ์ด ๋์ ์ ํตํด!๐คconst [_, __, ...args] = process.argv;
console.info(
args.reduce((total, arg) => {
let t = total;
t += Number(arg);
return t;
}, 0)
);
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ถ๐ฝ ๋จ๊ณ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/codefinity/steps-343lํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค