如何在Fsharp中返回“无”?

时间:2019-12-16 16:20:59

标签: f#

它只返回一些“”,但我需要返回“无”。

我该怎么做?

let cat(filenames: string list) : string option =
    try
        let b = filenames |> List.map (fun x -> (defaultArg (concat(x)) ""))
        Some (String.concat "" b)
    with  _ -> None

1 个答案:

答案 0 :(得分:2)

它返回some "",因为空列表不会引起异常。您需要匹配一个空列表并返回None。我也不确定List.map是否与您在此处尝试执行的concat对齐,也许您是说List.reduce吗? 这样的事情可能会起作用。

let cat filenames = 
   match filenames with
   | [] -> None
   | l -> l |> List.reduce (+) |> Some