트랙
/
F#
F#
/
연습 문제
/
로그 레벨
로그 레벨

로그 레벨

학습 연습 문제

소개

문자열

F#에서 string은 유니코드 문자(글자, 숫자, 문장 부호 등)의 시퀀스로 이루어진, 변경할 수 없는 텍스트를 나타내는 객체예요. 다음과 같이 정의해요:

let fruit = "Apple"

문자열은 문자열의 메서드를 호출하거나 String 모듈의 함수를 사용해서 다뤄요. 문자열을 한 번 만들면 그 값은 절대 바뀌지 않아요. 문자열을 수정하는 것처럼 보이는 메서드나 함수도 사실은 새로운 문자열을 반환해요.

문자열은 몇 가지 방법으로 이어 붙이거나 서식을 지정할 수 있어요.

  • + 연산자로 문자열을 이어 붙일 수 있어요:
let sentence = "Apple" + " is a type of fruit."
  • 텍스트 서식을 지정할 때는 sprintf 함수를 사용할 수 있어요. 서식 텍스트에 자리 표시자를 넣고(string에는 %s), 값은 인자로 넘겨줘요:
let sentence = sprintf "%s is a type of %s." "Apple" "fruit"

지침

이 연습 문제에서는 로그 라인을 처리해요.

각 로그 라인은 다음과 같은 형식의 문자열이에요: "[<LEVEL>]: <MESSAGE>".

로그 레벨은 세 가지가 있어요:

  • INFO
  • WARNING
  • ERROR

세 가지 작업이 있는데, 각 작업은 로그 라인 하나를 받아서 그걸로 무언가를 해보라고 해요.

1. 로그 라인에서 메시지 가져오기

message 함수를 구현해서 로그 라인의 메시지를 반환하게 해요:

message "[ERROR]: Invalid operation"
// => "Invalid operation"

앞뒤의 공백은 제거해야 해요:

message "[WARNING]:  Disk almost full\r\n"
// => "Disk almost full"

2. 로그 라인에서 로그 레벨 가져오기

logLevel 함수를 구현해서 로그 라인의 로그 레벨을 반환하게 해요. 로그 레벨은 소문자로 반환해야 해요:

logLevel "[ERROR]: Invalid operation"
// => "error"

3. 로그 라인 다시 포맷하기

로그 라인의 형식을 다시 만드는 reformat 함수를 구현해요. 메시지를 먼저 쓰고 그 뒤 괄호 안에 로그 레벨을 넣어요:

reformat "[INFO]: Operation completed"
// => "Operation completed (info)"
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
F# Exercism

로그 레벨 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 F# 트랙을 개념 18개연습 문제 148개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.