🔥 이름 있는 옵션 사용하기

276자
4분

count 도구에는 사용성 문제가 있어요. 사용자가 입력 파일을 먼저 제공해야 할지, 출력 파일을 먼저 제공해야 할지 바로 명확하지 않죠. 두 입력에 위치 인자(positional argument)를 사용하는 대신, 레이블이 있는 옵션(labeled option)을 지정할 수 있습니다.:

shell
% count --input-file readme.md --output-file readme.counts
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
shell
% count --input-file readme.md --output-file readme.counts
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 

이렇게 하려면 @Argument 속성 래퍼 대신 @Option 속성 래퍼를 사용합니다.:

swift
@main
struct Count: ParsableCommand {
    @Option var inputFile: String
    @Option var outputFile: String
 
    mutating func run() throws {
        print("""
            Counting words in '\(inputFile)' \\
            and writing the result into '\(outputFile)'.
            """)
 
        // 'inputFile'을 읽고, 단어를 세고, 'outputFile'에 저장해요.
    }
}
 
swift
@main
struct Count: ParsableCommand {
    @Option var inputFile: String
    @Option var outputFile: String
 
    mutating func run() throws {
        print("""
            Counting words in '\(inputFile)' \\
            and writing the result into '\(outputFile)'.
            """)
 
        // 'inputFile'을 읽고, 단어를 세고, 'outputFile'에 저장해요.
    }
}
 

@Option 속성 래퍼는 --name <value>처럼 보이는 명령줄(command-line) 입력을 나타내며, 속성 이름에서 이름을 파생시켜요.

이 인터페이스는 count 도구 사용자에게 장단점(trade-off)이 있어요. @Argument를 사용하면 사용자 입력량은 줄어들지만, 입력 파일과 출력 파일 중 어느 것을 먼저 입력해야 하는지 기억해야 하는 단점이 있습니다. 반면에 @Option을 사용하면 사용자가 입력해야 할 양은 조금 늘어나지만, 각 값 사이의 구분을 명확하게 해 줍니다. 옵션은 순서에 독립적이므로 사용자는 입력 파일과 출력 파일을 어느 순서로든 지정할 수 있어요:

shell
% count --output-file readme.counts --input-file readme.md
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
shell
% count --output-file readme.counts --input-file readme.md
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 

이렇게 옵션을 사용하면 사용자가 입력하는 명령이 조금 길어지긴 하지만, 어떤 값이 입력 파일이고 어떤 값이 출력 파일인지 명확하게 구분할 수 있어요. 게다가 옵션은 순서에 영향을 받지 않아서 사용자가 입력 파일과 출력 파일을 어떤 순서로 지정하든 상관없어요.

이 다이어그램은 count 명령어 동작 방식을 보여줘요. 사용자는 --input-file--output-file 옵션으로 입력 파일과 출력 파일을 지정하고, count는 입력 파일 단어를 세어서 그 결과를 출력 파일에 저장해요.

이렇게 옵션을 사용하면 사용자가 입력하는 명령은 조금 길어지지만, 값들 역할을 명확히 하고 순서에 구애받지 않게 만들어요. 이는 명령어 사용성을 크게 향상시켜 줍니다!

YouTube 영상

채널 보기
AI 가중치와 내적, 선형대수로 이해하기
AI에서의 전치 - 데이터 레이아웃 변환
AI를 위한 선형대수 - 전단, 행렬식, 변환의 핵심
AI에서 선형대수학이 중요한 이유
투영과 예측, 그리고 선형 결합 | 선형대수학
AI에서 코사인 유사도가 중요한 이유
AI에서 고차원 임베딩이 무엇일까?
AI를 이해하는 첫걸음, 선형대수학