Во втором примере это выглядит как «?».должен быть перенесен по всей цепочке вызовов из-за его первоначального использования.Вместо того, чтобы пытаться воссоздать этот оператор и сохранить то, как это выглядит в C #, я предлагаю вам перейти на более идиоматический F #.Например:
module String =
let replace (oldValue: string) (newValue: string) (s: string) =
s.Replace (oldValue, newValue)
let trim (s: string) =
s.Trim()
let result =
match isNull productPage with
| true -> None
| false ->
productPage.Html.Descendants.["li"]
|> Seq.map (fun node -> node.InnerText())
|> Seq.tryPick (fun link -> (Regex.Match (link, "code:").Success))
let code =
match result with
| Some html ->
html
|> String.replace "code:" ""
|> String.trim
| None -> "Not Found"
product.code <- code