从 IHTMLProp 轻松检索值

Easily retrieving value from IHTMLProp

我正在使用 Fable.React 并想从 IHTMLProp list 中检索一些值。

这目前有效,但感觉有点乏味:

let selectInput (attr : IHTMLProp list) options =
    let selectedValue =         
        attr
        |> List.map (function
                       | :? HTMLAttr as a -> 
                            match a with 
                            | Value v -> Some v
                            | _ -> None 
                       | _ -> None)
        |> List.choose id
        |> List.tryHead       

有更简单的方法吗?

特别是我想简化嵌套匹配表达式,但欢迎任何提示。

为了简化查找​​,您可以使用List.tryPick

为了简化匹配,您可以使用活动模式。

代码为:

let (| IsHTMLAttr | _ |) (attr: IHTMLProp) =
    match attr with
    | :? HTMLAttr as a -> Some a
    | _ -> None

let selectInput (attrs : IHTMLProp list) options =
    let selectedValue =         
        attrs
        |> List.tryPick (function
           | IsHTMLAttr (Value v) -> Some v
           | _ -> None)