나는 F #을 배우고 있으며 작동하는 것을 쓰고 있지만 완전히 이해하지 못한다는 것을 알고있다. 여기에, 예를 집F # 여러 문장으로 된 람다 표현
let processArgs args =
match args with
| null
| [||] -> [fun() -> getCredentials(); home 20; mentions 20; messages 20]
| [|"-h"|]
| [|"-?"|] -> [showHelp]
| [|"-reset"|] -> [clearAllSettings]
| _ -> [fun() -> printfn "%s" (String.Join(" ", args))]
[<EntryPoint>]
let main (args:string[]) =
try
let actions = processArgs args
List.iter (fun action -> action()) actions
0
finally
Console.ResetColor()
Console.CursorVisible <- true
방법의 getCredentials을의 언급, 메시지, showHelp와, 그리고 clearAllSettings는 모든 단순 기능이며, 당신이 무엇을 기대 않습니다. (네, 트위터 클라이언트입니다, 그 새로운 '안녕하세요'데모하지?)
라인 : 내가 원하는
[fun() -> getCredentials(); home 20; mentions 20; messages 20]
작품처럼. getCredentials를 호출 한 다음 집으로 돌아온 다음 멘션과 메시지를 호출합니다.
저의 관점에서 볼 때 세미콜론은 명령문 분리 기호와 같은 역할을합니다. 나는 전에 이것을 설명한 것을 보지 못했다. 그게 여기서 벌어지고있는거야?
이 글을 쓰는 관용적 인 방법이 있습니까? (즉, 노련한 F # 프로그래머가 바닥을 훑어보고 웃으면 서 이걸 보았을까요?)
추가 정보 : 내 원래 의도는 작업 목록을 작성한 다음 옵션을 발견 할 때 작업을 추가하는 것이 었습니다. C#에서는 일반적으로 List < Action>()을 사용하여이 작업을 수행했습니다. 세미콜론은 원래 다음과 같이 작성하려고했기 때문에 놀랐습니다.
[getCredentials; home 20; mentions 20; messages 20]
하지만 컴파일러는 그것을 좋아하지 않았습니다.
음, 언어 사양 주위에 파고의 몇 시간이 답을 알 수있다. 그것은 장황한 구문으로 알려진 구문의 한 형태입니다. 여기에 그것을 설명하는 링크가 있습니다 : http://msdn.microsoft.com/en-us/library/dd233199.aspx 나는 F # 'ers가 그것을 어떻게 할 것인지 명령 줄 인수를 구문 분석하는 것에 대한 나의 접근법이 있는지를 궁금해하고 있습니다. –