alternatywa do nawiasów:
GetLength <| Some a
myślę, że ważne jest, aby zająć się tym pytanie:
Dlaczego ktoś miałby typu skłonny 18 tokeny ponad 3 linie, kiedy można uzyskać dokładnie to samo za pomocą 12 tokenów w jednym wierszu?
Pisanie kodu to nie tylko zwięzłość - dotyczy to również czytelności i łatwości konserwacji. Załóżmy, że musisz zająć się sprawą, w której a
jest a
. Z pasujące do wzorca, można przejść z tego:
let GetLength (value : string option) =
match value with
| Some s -> s.Length
| _ -> 0
do tego:
let GetLength (value : string option) =
match value with
| Some s when s <> null -> s.Length
| _ -> 0
Do F # programista, że ich znaczenie jest jasne. Aby rozwiązać implementację wyglądałby mniej więcej tak:
let GetLength (value : option<string>) =
if value.IsSome && value.Value <> null then value.Value.Length else 0
Rezultatem może być taka sama, ale nie jest szczególnie dobrze widoczne na pierwszy rzut oka, co się dzieje.
Jest to dobre, jeśli dopasowywanie wzorów nie współgra z tobą, ale dodatkowy "koszt" w prostym przypadku jest często uzupełniany wiele razy w miarę ewolucji logiki.
Idiomatically, nie piszesz .IsSome i.Wartość, zamiast tego używasz instrukcji "dopasuj". – Brian
Na podstawie serii dzisiejszych pytań przydatne może być przeczytanie http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!180.entry i http://lorgonblog.spaces.live.com/ blog/cns! 701679AD17B6D310! 181.entry, które zapewniają motywację do opowiadania typu opcji. – Brian
To nie potrwa długo. Dlaczego ktoś miałby żetony typu 18 powyżej 3 linii, skoro można uzyskać to samo, używając 12 żetonów w jednej linii? –