我正在使用HtmlAgilityPack解析一些HTML文件。以下代码
let html = "<div>...</div>"
let doc = new HtmlDocument()
doc.LoadHtml(html)
let node = doc.DocumentNode
let x = node.SelectSingleNode("//div/@xyz")
|> Option.ofNullable
最后一行出现
错误HtmlNode类型与'Nullable <'a>'类型不匹配
以下代码可以将其转换
let ofNull = function
| null -> None
| x -> Some x
是否有内置的结构可以做到这一点?我不希望我的ofnull
定义分散在代码/脚本中的任何地方。
答案 0 :(得分:3)
您要查找的内置函数是Option.ofObj
,而不是Option.ofNullable
。
Option.ofNullable
转换类型System.Nullable<'a>
的值,该类型是.NET类型,用于将值类型转换为可空类型。 C#为此提供了语言支持,例如,您可以使用int?
来定义与F#中的option<int>
类似的类型。
Option.ofObj
函数采用任何.NET obj
(实际上是具有null
作为值的通用类型)并返回Some
(如果不是{{ 1}}或null
(如果是None
)。类型是:
null