언어마다 코딩테스트의 입출력시에 자주 쓰이는 것들이 있다
input, cin, scanf, getline 등등 각각 공백을 기준으로나 줄을 기준으로 입력을 받는다
자바스크립트도 공백을 기준으로 한 input 이 있지만 줄단위로 입력을 받는 readline 모듈이 존재한다
자바스크립트의 내 내장 모듈로서 readable 스트림에서 rereadline 모듈을 이해해보자
기본 형태는 아래와 같다
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line)=>{
/*입력 받는 값을 처리하는 코드*/
rl.close();
});
rl.on("close", ()=>{
/*입력이 끝나고 실행할 코드*/
process.exit();
});
위의 코드를 하나씩 해석하자면
const readline = require("readline");
require 는 인자로 '파일 경로' 나 '모듈이름' 을 써서 외부 모듈을 불러올 수 있다. 불러와서 변수 readline 에 저장한다
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
createInterface() 메소드로 readline 모듈의 인터페이스 객체 rl를 만드는데,
객체의 input, output 속성은 표준 입출력을 따른다
rl.on("line", (line)=>{
/*입력 받는 값을 처리하는 코드*/
rl.close();
});
인터페이스 객체 rl 는 입출력 관련 이벤트를 처리 할 수 있는데
on 메소드를 통해 이벤트 발생 시 실행할 동작을 지정 가능하다
on 메소드의 첫번째 인자로 "line" 을 입력하면 해당하는 이벤트가 발생하는데,
사용자가 콘솔 입력에서 줄바꿈 문자나 Enter 혹은 Return 를 누르기 전까지의 데이터를 처리하는 코드를
함수로 실행시킨다. 입력이 끝나면 인터페이스를 종료하여 무한 입력을 막기 위해 rl.close() 메소드를 호출해서
readable 스트림을 종료한다
rl.on('close', () => {
// 입력이 끝난 후 실행할 코드
})
on 메소드의 첫인자로 "close" 를 입력하면 close 이벤트가 발생하는데, 더이상 입력되는 값이 없을 때
실행되는 이벤트이다. 그러니 위에서 rl.close() 입력이 종료되면 화살표 함수 안에
위에서 받은 입력값을 이용해서 사용하는 로직을 구현하면 된다
'JavaScript > 이론 및 용어' 카테고리의 다른 글
모듈 사용 시 import 와 require 의 차이 (0) | 2022.09.01 |
---|---|
객체의 키와 값에 접근하는 방법 (0) | 2022.08.29 |
var 와 let, const 의 호이스팅 차이 (0) | 2022.08.05 |
싱글 스레드, 콜백 함수, 비동기 처리 (0) | 2022.07.27 |
싱글 스레드, 멀티스레드 (0) | 2022.07.26 |
댓글