2023. 7. 21. 19:58ใStudy_Develop/์๊ณ ๋ฆฌ์ฆ | ์ฝ๋ฉํ ์คํธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์ถ๋ ฅํ๊ธฐ JavaScript (feat. readline์ฌ์ฉ๋ฒ)
๋ฌธ์ >
ํด๊ฒฐ ๋ฐฉ๋ฒ>
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input = [line];
}).on('close',function(){
str = input[0];
console.log(str);
});
ํด์ค >
readline๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ฝ์์์ ์ ๋ ฅ์ ์ฝ๊ณ ,
๋ค์ ์ถ๋ ฅํ๋ js์ฝ๋
1. rl.on('line', function (line) { ... } ์ด ๋ถ๋ถ์ line์ด๋ฒคํธ์ ๋ํ
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๋ค. ์ฌ์ฉ์๊ฐ ์ฝ์์ ์๋ก์ด ์ ๋ ฅ ์ค์
์ ๋ ฅํ ๋ ๋ง๋ค ์ ๊ณต๋ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋๋ค.
2. input = [line]; : ์๋ก์ด ์ค์ด ์ ๋ ฅ๋ ๋, ์ฝ๋ฐฑํจ์๋ ํด๋น ์ ๋ ฅ์
input ๋ฐฐ์ด์ ํ ๋น ํ๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ณ ์์ง๋ง, ์ค์ ๋ก๋ ํ๋์ ์ ๋ ฅ ์ค๋ง ์ ์ฅ
3. on('close', function() {...} : ์ด ๋ถ๋ถ์ 'close'์ด๋ฒคํธ์ ๋ํ
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ค์ ํ๋ค. readline์ธํฐํ์ด์ค๊ฐ ๋ซํ ๋
์ ๊ณต๋ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋๋ค.
4. str=input[0] : close์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ์ฝ๋๋ input ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ
์์๋ฅผ ๊ฐ์ ธ์ str๋ณ์์ ํ ๋นํ๋ค.
5. console.log(str) : ๋ง์ง๋ง์ผ๋ก, ์ฝ๋๋ str๋ณ์์ ๊ฐ์
์ฝ์์ ๊ธฐ๋กํ๋ค.
โreadline?
Readable stream ์์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ํ ์ค์ฉ ์ฝ๊ธฐ ์ํ
์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
readline ๋ชจ๋์ ๋ถ๋ฌ์จ ํ input, output์ ํตํด์
์ฝ์์ ์ ๋ ฅ๊ฐ์ ๋ฐ๋ ์ค๊ณผ
๊ฒฐ๊ณผ ๊ฐ์ ๋ด๋๋ ์ค์ ์์ฑํ ์ ์๋ค.
โreadline ์ฌ์ฉ๋ฒ
1. ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
const readline = require('readline')
2. interface ๊ฐ์ฒด ๋ง๋ค๊ธฐ
interface ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์ฝ์์์ ํ์ค ์ ์ถ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
stdin๊ณผ stdout์ ๋ํ ์งง์ ์ค๋ช ์ ํ์๋ฉด,
standard input๊ณผ standard output์ ์ฝ์์ด๋ค.
3. ์ ์ถ๋ ฅ ์ฝ๋ ์์ฑํ๊ธฐ
rl.on('line', (line) => {
// ์
๋ ฅ ๋ฐ์ ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ฝ๋ //
rl. close();
});
rl.on('close', () => {
// ์
๋ ฅ์ด ๋๋๊ณ ์คํํ๋ ์ฝ๋ //
process.exit();
});
- on()๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ์ด๋ฒคํธ์ ์ฝ๋ฐฑํจ์๋ฅผ ์ ๋ฌ
- 'line' ์ ๋ ฅ ๋ฐ์ ๊ฐ์ ํ ์ค์ฉ ์ฝ์ด
๋ฌธ์์ด ํ์ ์ผ๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ ์ด๋ฒคํธ
- rl.close()์ธํฐํ์ด์ค๋ฅผ ์ข ๋ฃ, ๋ฌดํํ ์ ๋ ฅ๋ฐ๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
๊ทธ ํ, ๋ค์ ์ด๋ฒคํธ๋ก close๋ฅผ ์์ฑํ์ฌ ์ ๋ ฅ์ด ๋๋ ํ
์คํ๋์ด์ผ ํ ํจ์๋ฅผ ์์ฑํ๋ค.