은 "인수"를 엔트리 포인트에 인수가 배열이 아닌 목록입니다, 그래서 당신은 그것을 사용할 수 없습니다 리스트 일치의 구문
위에서 제안한 것처럼 배열에서 일치시키는 대신 실제 인수로 인수를 바꿔서 일치시킬 수 있습니다. 나는 커맨드 라인 인자를 다루는 매우 유용한 방법이라는 것을 알게되었다. 예를 들어 :
[<EntryPoint>]
let main args =
let arglist = args |> List.ofSeq
match arglist with
| first :: [] ->
// do something with 'first'
| _ -> // catches both the no-argument and multi-argument cases
printfn "Usage : "
// print usage message
편집 : 여기에서 이동하는 방법은 두 가지가 있습니다 더 복잡한 예제로. 물론 더 복잡한 경우를 매치에 추가하거나 옵션 목록을 구문 분석하여 재귀 적 방법으로 옵션 및 인수를 나타내는 객체를 작성할 수 있습니다. 후자는 여기에 적합하기에 너무 복잡해 지겠지만보다 복잡한 일치 사례의 예로서, 실행 파일이 대상 파일에서 작동하는 "명령"을 허용하는 최근 작업과 관련된 코드가 있으며 각 명령 이 다른 추가 인수
[<EntryPoint>]
let main args =
let arglist = args |> List.ofSeq
match arglist with
| target :: "list" :: [] ->
listContent target
| target :: "remove" :: name :: [] ->
removeContent target name
| target :: "add" :: name :: [] ->
addContent target name
| target :: "addall" :: names ->
for name in names do
addContent target name
| _ -> // catches cases not covered above
printfn "Usage : "
// print usage message
당신이 제 3 자 lib 디렉토리를 원하는 경우에, 나는 F 번호 cmd를 줄 도구에 대한 [UnionArgParser] (https://github.com/eiriktsarpalis/UnionArgParser)를 사용하여 좋아한다. –