트랙
/
Gleam
Gleam
/
연습 문제
/
로그 레벨
로그 레벨

로그 레벨

학습 연습 문제

소개

문자열

Gleam의 문자열은 큰따옴표로 감싼 불변 텍스트예요. 유니코드 문자를 지원하고, 여러 줄에 걸쳐 쓸 수도 있어요.

let greeting = "Hello, Joe! 📞"

let multi_line_string = "one
two
three"

문자열은 <> 연산자로 이어 붙일 수 있어요:

let name = "Mike"
"Hello, " <> name <> "!"
// -> "Hello, Mike!"

표준 라이브러리의 gleam/string 모듈은 문자열을 다루는 함수를 제공해요.

문자열은 case 식에서 패턴 매칭할 수 있어요:

pub fn on_an_excellent_adventure(name: String) -> Bool {
  case name {
    "Bill" -> True
    "Ted" -> True
    _ -> False
  }
}

문자열의 앞부분을 매칭하고 나머지를 변수에 할당하고 싶다면 <> 연산자 패턴을 사용할 수 있어요:

pub fn profession(name: String) -> String {
  case name {
    "Dr " <> rest -> rest <> " is a doctor"
    _ -> "I'm not sure what " <> name <> " does"
  }
}

지침

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

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

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

  • INFO
  • WARNING
  • ERROR

세 가지 작업이 있는데, 각 작업에서는 로그 라인을 하나 받아 무언가를 해야 해요.

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

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

message("[ERROR]: Invalid operation")
// -> "Invalid operation"

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

message("[WARNING]:  Disk almost full\r\n")
// -> "Disk almost full"

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

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

log_level("[ERROR]: Invalid operation")
// -> "error"

3. 로그 라인 형식 바꾸기

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

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

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

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