🔥 옵션과 플래그 이름 설정하기
커맨드 라인에서 사용하는 옵션과 플래그 이름은 대개 속성 이름에서 비롯됩니다. 예를 들면 --count
와 --index
같은 식입니다. 카멜 케이스(camel-case) 이름은 --strip-whitespace
처럼 하이픈으로 구분된 소문자 단어로 바꿉니다.
이 기본 동작을 재정의하려면 @Option
또는 @Flag
이니셜라이저에 하나 이상 이름 지정을 명시하면 됩니다. 다음 명령은 네 가지 이름 지정 방식을 보여줍니다:
struct Example: ParsableCommand { @Flag(name: .long) // 기본값과 동일 var stripWhitespace = false @Flag(name: .short) var verbose = false @Option(name: .customLong("count")) var iterationCount: Int @Option(name: [.customShort("I"), .long]) var inputFile: String }
swift
각 이름 지정 방식을 하나씩 살펴보겠습니다:
-
.long
또는.short
를 지정하면 속성 이름을 커맨드 라인 이름 소스로 사용해요. long 이름은 전체 이름을 사용하고 앞에 대시 두 개(-
)를 붙이고, short 이름은 한 문자를 사용하고 앞에 대시 한 개()를 붙입니다. 이 예제에서stripWhitespace
와verbose
플래그를 이런 식으로 지정했습니다:% example --strip-whitespace -v
text -
.customLong(_:)
또는.customShort(_:)
를 지정하면 주어진 문자열이나 문자를 속성 long 또는 short 이름으로 사용합니다.% example --count 10 -I file1.swift
text -
배열 리터럴 구문으로 여러 이름을 지정할 수 있어요.
inputFile
속성은 기본 long 이름으로도 제공할 수 있습니다:% example --input-file file1.swift
text
참고: .customLong
에 withSingleDash: true
를 전달하여 -verbose
와 같은 single-dash 플래그나 옵션을 만들 수도 있습니다. 이 이름 지정은 레거시 커맨드 라인 인터페이스를 마이그레이션할 때처럼 꼭 필요한 경우에만 사용하세요. single-dash 접두사와 함께 long 이름을 사용하면 short 이름과 조합될 때 모호성이 발생할 수 있거든요. -file
이 옵션 한 개인지 -f
, -i
, -l
, -e
네 가지 short 옵션을 조합한 것인지 명확하지 않을 수 있습니다.
이렇게 옵션과 플래그 이름을 설정하는 방법에 대해 알아봤습니다. 상황에 맞게 적절한 방식을 선택하여 사용하면 좋겠네요. 커맨드 라인 인터페이스를 설계할 때는 사용자 입장에서 직관적이고 일관성 있는 이름을 고르는 게 중요하답니다!