ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS Module] 콘솔창을 통한 입력 / readline module
    Javascript/모듈 2022. 12. 14. 16:23
    반응형

     

     

      프로그래머스 Lv. 0의 문제를 풀다 처음 접하는 모듈이 있어서 정리해보려한다. readline 모듈은 콘솔을 통해 입력값을 받고 한 줄씩 처리할 수 있게 해주는 모듈이다. 아래의 코드는 문제에 답으로 제출한 코드인데 이를 들여다 보며 모듈이 어떤 방식으로 동작하는지 알아보자

     

    const readline = require('readline');  // 모듈 import
    const rl = readline.createInterface({  // interface 객체 생성
        input: process.stdin,
        output: process.stdout
    });
    
    let N;                                 // 입/출력에서 사용될 변수 선언
    
    rl.on('line', function (line) {        // 입/출력 처리 (입력부)
        N = Number(line);
        rl.close();
    }).on('close', function () {           // 입/출력 처리 (출력부)
        for (let i = 1; i<=N; i++) {
            console.log('*'.repeat(i))
        }
    });

     

     

    모듈 불러오기

    const readline = require("readline");

     

    interface 객체 생성

    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });

     

    인터페이스 객체 rl을 통한 입출력 처리

    rl.on('line', function (line) {     
    
        rl.close();
    });

      콘솔으로 부터 입력은 첫번째 인자를 'line'으로 전달함으로서 이루어진다. 이 이벤트는 한줄씩 입력을 받으며 입력받은 한 줄의 데이터는 line변수에 저장되어 callback 함수에 전달된다. rl.close()를 명시하지 않을 경우 무한하게 입력이 이루어지므로 주의해야한다.(의도적으로 명시하지 않음으로서 여러줄을 입력받는 것도 가능하다.)

     

    rl.on('close', () => {
    
        process.exit();
    })

        출력은 첫번째 인자를 'close'로 전달하여 실행된다. 앞서 입력의 경우에서 close() 함수가 호출되었을 때 실행된다. 보통 맨 위의 예시 코드에서와 같이 입력의 callback에서 데이터를 처리하고, 출력에서 의도한 대로 결과물을 출력한다.

     

     

    반응형

    댓글

Designed by Tistory.