目标是转换一个string option
这是通过一些很好的类型计算得出的一个简单的string
然后可以传递到 UI/printf
/URL/其他只想要一个字符串并且对选项类型一无所知的东西。None
应该变成空字符串。
显而易见的方法是做一个match
or an if
在输入上:
input |> fun s -> fun s -> match s with | Some v -> v | _ -> ""
or
input |> fun s -> if s.IsSome then s.Value else ""
但虽然仍然是单行代码,但它们仍然占用相当多的行空间。我希望找到最短的方法来做到这一点。
您还可以使用该功能defaultArg input ""
在您的代码中使用前向管道的内容是:
input |> fun s -> defaultArg s ""
这是另一种编写相同但没有 lambda 的方法:
input |> defaultArg <| ""
如果我们在 F# 核心中有一个参数翻转的版本,那就更好了。我仍然认为这是最短的方法,无需在其他库或用户定义的函数中进行中继。
UPDATE
现在在 F# 4.1 FSharp.Core 中提供Option.defaultValue
这是相同的,但参数翻转了,所以现在你可以简单地写:
Option.defaultValue "" input
这是管道转发友好的:
input |> Option.defaultValue ""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)