🔥 커스텀 이름 사용하기

272자
3분

기본적으로 @Option@Flag 속성은 속성 이름을 사용해 커맨드 라인 인자 이름을 생성합니다. 하지만 이 이름을 입맛에 맞게 마음대로 변경할 수 있어요. 예를 들어, verbose 플래그 대안으로 -v를 사용할 수 있게 만들 수 있죠. 그러면 사용자는 --verbose 대신 -v를 사용할 수 있습니다. 새로운 인터페이스는 다음과 같아요:

shell
% count -v -i readme.md -o readme.counts
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
% count --input readme.md --output readme.counts -v
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
% count -o readme.counts -i readme.md --verbose
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
shell
% count -v -i readme.md -o readme.counts
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
% count --input readme.md --output readme.counts -v
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 
% count -o readme.counts -i readme.md --verbose
Counting words in 'readme.md' and writing the result into 'readme.counts'.
 

@Option@Flag 이니셜라이저에 name 파라미터를 전달해 입력 이름을 커스텀할 수 있어요:

swift
@main
struct Count: ParsableCommand {
    @Option(name: [.short, .customLong("input")])
    var inputFile: String
 
    @Option(name: [.short, .customLong("output")])
    var outputFile: String
 
    @Flag(name: .shortAndLong)
    var verbose = false
 
    mutating func run() throws { ... }
}
 
swift
@main
struct Count: ParsableCommand {
    @Option(name: [.short, .customLong("input")])
    var inputFile: String
 
    @Option(name: [.short, .customLong("output")])
    var outputFile: String
 
    @Flag(name: .shortAndLong)
    var verbose = false
 
    mutating func run() throws { ... }
}
 

위 코드를 하나씩 뜯어보면:

  1. inputFile 속성에 name: [.short, .customLong("input")]을 전달했습니다.
    • .short은 속성 이름 첫 글자만 사용해 i로 단축 이름을 만들고,
    • .customLong("input")-input이라는 긴 이름을 커스텀하게 지정합니다.
  2. outputFile 속성도 마찬가지로 .short.customLong("output")을 사용해 o-output 이름을 지정했어요.
  3. verbose 속성은 name: .shortAndLong을 사용했는데, 이는 v-verbose라는 짧은 이름과 긴 이름을 모두 사용하겠다는 뜻이에요.

기본 이름 지정 방식은 .long인데, 이는 속성 이름 앞에 --를 붙여 사용해요. .short은 속성 이름 첫 글자만 사용하고 -를 붙이며, 여러 개 짧은 옵션을 함께 사용할 수 있게 해줍니다. .customShort(_:).customLong(_:) 메서드를 사용하면 짧은 이름과 긴 이름을 직접 지정할 수도 있고, .shortAndLong 속성을 사용하면 짧은 이름과 긴 이름 두 가지를 모두 만들어내는 일반적인 상황을 간단히 처리할 수 있습니다.

이렇게 커스텀 이름을 사용하면 사용자는 커맨드 라인 인자를 더욱 직관적이고 편리하게 사용할 수 있습니다.

YouTube 영상

채널 보기
행렬의 기본 연산 - 행렬 덧셈, 스칼라 곱, 전치 | 선형대수학
투영과 예측, 그리고 선형 결합 | 선형대수학
AI는 데이터를 어떻게 분류할까? 벡터의 거리와 KNN 알고리즘 | 선형대수학
인공지능은 세상을 어떻게 숫자로 읽는가? - 이미지, 소리 그리고 텍스트가 행렬이 되는 원리 | 선형대수학
트라이(Trie)를 이용한 자동 완성 알고리즘 | Trie 자료구조 이야기
우리가 매일 쓰는 맞춤법 검사기와 라우터 속에 숨겨진 알고리즘은? | Trie 자료구조 이야기
직교성과 벡터 투영 | 선형대수학
AI 추천 시스템의 원리, 벡터 사이의 각도와 코사인 유사도 | 선형대수학