如何使用HtmlDocument的TryGetHtml

时间:2018-09-24 08:32:48

标签: f# f#-data

说我有一个功能

let GetDataFromWebsite (url:string) =
    let webpage = HtmlDocument.Load(url)
    let html = webpage.TryGetHtml
    html

(请注意,一旦我确定了如何使用TryGetHtml函数,它将变成一个更长的函数)

这告诉我它有一个回报string -> unit -> HtmlNode option。这到底是什么返回值,我该如何使用呢?我尝试过

match GetDataFromWebsite(@"...") with
| None -> "None"
| _ -> (fun a -> a.ToString())
|> printfn "%s"

但是Visual Studio指出:

This expresion was expected to have type
  'unit -> FSharp.Data.HtmlNode option'
but here has type
  ''a option'

1 个答案:

答案 0 :(得分:1)

就在附近:)

TryGetHtml是一个函数,而不是一个属性,您可能想对其求值而不是对其进行赋值:

let GetDataFromWebsite (url:string) =
    let webpage = HtmlDocument.Load(url)
    let html = webpage.TryGetHtml() // note braces
    html

现在它返回HtmlNode option,您可以在以下位置进行图案匹配:

match GetDataFromWebsite(@"...") with
| None -> "None"
| Some x -> x.ToString()
|> printfn "%s"

这应该编译没有错误。