zmj*_*zmj 11 f# design-patterns
我正在尝试编写一个组成其他两种模式的模式,但我不确定如何去做.我的输入是字符串列表(文档); 我有一个模式匹配文档标题和匹配文档正文的模式.此模式应与整个文档匹配,并返回标题和正文模式的结果.
Yot*_*aXP 26
您可以使用一起运行两个模式&.你在问题中省略了一些细节,所以这里的一些代码我假设与你正在做的有些相似.
let (|Header|_|) (input:string) =
if input.Length > 0 then
Some <| Header (input.[0])
else
None
let (|Body|_|) (input:string) =
if input.Length > 0 then
Some <| Body (input.[1..])
else
None
Run Code Online (Sandbox Code Playgroud)
第一个模式将获取字符串的第一个字符,第二个模式将返回除第一个字符之外的所有字符.以下代码演示了如何一起使用它们.
match "Hello!" with
| Header h & Body b -> printfn "FOUND: %A and %A" h b
| _ -> ()
Run Code Online (Sandbox Code Playgroud)
打印出: FOUND: 'H' and "ello!"