说我有一个功能
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'
答案 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"
这应该编译没有错误。