F# “如何返回”;无”;在Fsharp?
它只返回一些“”,但我需要返回“无” 我该怎么做F# “如何返回”;无”;在Fsharp?,f#,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 它返回some”“,因为空列表不会导致异常。您需要在
let cat(filenames: string list) : string option =
try
let b = filenames |> List.map (fun x -> (defaultArg (concat(x)) ""))
Some (String.concat "" b)
with _ -> None
它返回some”“
,因为空列表不会导致异常。您需要在空列表中进行匹配,并且不返回任何值。我也不确定List.map
是否与您在这里尝试执行的concat一致,也许您的意思是List.reduce
?
像这样的东西可能有用
let cat filenames =
match filenames with
| [] -> None
| l -> l |> List.reduce (+) |> Some
它返回some”“
,因为空列表不会导致异常。您需要在空列表中进行匹配,并且不返回任何值。我也不确定List.map
是否与您在这里尝试执行的concat一致,也许您的意思是List.reduce
?
像这样的东西可能有用
let cat filenames =
match filenames with
| [] -> None
| l -> l |> List.reduce (+) |> Some
你能添加更多的上下文吗?当出现问题时,您编写的代码似乎返回
None
,但不清楚哪里会出错。concat
的定义是什么?module readNWrite let-concat(文件名:string):string option=try let a=System.IO.File.ReadAllText filename-Some a with->None-let-cat(文件名:string list):string option=try let b=filenames |>list.map(fun x->(defaultArg(concat(x))“”)Some(String.concat“b)使用->Noneconcat可以从以前的代码中定义您是否可以添加更多上下文?当出现问题时,您编写的代码似乎返回None
,但不清楚哪里可能出错。concat
的定义是什么?模块readNWrite let-concat(文件名:String):string option=try let a=System.IO.File.ReadAllText filename有些a带有->None let cat(文件名:string list):string option=try let b=filenames |>list.map(fun x->(defaultArg(concat(x))))有些带有->nonecocat的(string.concat“b)是根据前面的代码定义的