有人可以向我解释功能性镜片吗?谷歌这是一个令人惊讶的困难主题,我没有取得任何进展.我所知道的是,它们提供了类似于OO的获取/设置功能.
我只是阅读了这个页面上的信息,而一个新的?提到运营商,我很不清楚它的用途是什么.
任何人都可以提供一个快速解释,发布一个代码剪切该如何使用该运算符,并可能提到一个用例?
编辑:这真的很尴尬,我注意到了吗?Don的发行说明中不再提及运算符.知道为什么会这样吗?
我从F#中使用的许多API都允许使用空值.我喜欢把它们变成选项.有一个简单的内置方法来做到这一点?这是我这样做的一种方式:
type Option<'A> with
static member ofNull (t:'T when 'T : equality) =
if t = null then None else Some t
Run Code Online (Sandbox Code Playgroud)
然后我就可以这样使用Option.ofNull:
type XElement with
member x.El n = x.Element (XName.Get n) |> Option.ofNull
Run Code Online (Sandbox Code Playgroud)
是否有内置的东西已经这样做了?
根据丹尼尔的回答,equality不需要.null可以使用约束来代替.
type Option<'A> with
static member ofNull (t:'T when 'T : null) =
if t = null then None else Some t
Run Code Online (Sandbox Code Playgroud)