F#:将字符串选项转换为字符串的最短方法

2024-04-20

目标是转换一个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(使用前将#替换为@)

F#:将字符串选项转换为字符串的最短方法 的相关文章

  • F# 从 while 循环中中断

    有什么方法可以做到这一点C C 例如 C 风格 for int i 0 i lt 100 i if i 66 break 最简洁的答案是不 您通常会使用一些高阶函数来表达相同的功能 有许多函数可以让您执行此操作 对应于不同的模式 因此 如果
  • 在可移植类库中使用 F# JsonProvider 失败

    我正在尝试使用 JsonProvider 当我调用它的函数时出现以下错误 System TypeInitializationException was unhandled Message An unhandled exception of
  • F# 类型函数和 [] 属性

    这两个 F 类型函数有什么区别 let defaultInstance1 lt a when a new unit gt a gt new a
  • 从 F# 中存储为概率序列的离散分布函数中抽取随机数

    存在给定的有限长度 N 的浮点序列 介于 0 和 1 之间 表示整数 0 N 1 上的分布函数 我们试图从这个分布中抽取一个随机数 一种方法是在 0 1 浮点数 中绘制一个均匀随机变量 然后计算该数字的逆累积分布函数 如果分布在数组中 则代
  • 在 F# 中处理 Deedle 时间序列中的缺失值 (1)

    这是一个小例子 我想处理系列上自定义函数的缺失值 假设我已经获得了一系列 series4 val it Series
  • 没有带有常量“模板参数”的 F# 泛型?

    我突然想到 F 泛型似乎不接受常量值作为 模板参数 假设有人想创建一种类型RangedInt这样 它的行为类似于 int 但保证只包含整数值的子范围 一种可能的方法是建立受歧视的工会 类似于 type RangedInt Valid of
  • F# 设置带有参数的 SQLCommand 的最佳方法

    我的 F 程序需要与 SQL Server 通信 在一部分中我有这样的事情 let workFlowDetailRuncommand new SqlCommand query econnection workFlowDetailRuncom
  • 如何使用 printf 自定义自定义类型的输出?

    我已经阅读了很多内容专家 F 并正在致力于构建一个实际的应用程序 在调试时 我已经习惯了传递这样的 fsi 命令 以使 repl 窗口中的内容清晰可见 fsi AddPrinter fun x myType gt myType ToStri
  • 在 F# 中实现返回 Task 的 C# 方法

    我正在 F 中创建一个类型 该类型继承自 C 类 该类公开返回的方法Task
  • 在 Blazor 中显示计时器

    我正在尝试在服务器端 Blazor 应用程序中显示倒计时器 我的代码同时使用 F 和 C 语言 该代码在某种程度上可以工作 但计时器永远不会按预期停止 并且计时器显示偶尔不会呈现所有数字 这是我第一次尝试 Blazor 服务器端应用程序 我
  • 我缺少什么:可以使用多个参数进行函数组合吗?

    我了解 F 中函数组合的基础知识 例如所述here http blogs msdn com b chrsmith archive 2008 06 14 function composition aspx 不过 也许我错过了一些东西 这 gt
  • 何时在 F# 中使用区分联合与记录类型

    在继续讨论复杂的示例之前 我试图先弄清楚 F 的基础知识 我正在学习的材料介绍了区分联合和记录类型 我已经审阅了两者的材料 但我仍然不清楚为什么我们要使用其中之一而不是另一个 我创建的大多数玩具示例似乎都可以在两者中实现 记录似乎非常接近我
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • 当 ToString() 具有协作对象时,为什么 WPF 数据绑定不显示文本?

    在一个简单的形式中 我绑定到许多不同的对象 有些放在列表框中 有些放在列表框中 有些放在列表框中 一些在文本块中 其中一些对象具有协作对象 在这些对象上ToString 方法在执行其工作时调用 通常是某种格式化程序 当我单步执行代码时 我发
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • 如何在MVVM中实现appSettings

    我正在尝试摆脱我使用的警告appSettings在 WPF 项目中 应用程序配置
  • 什么是错误“类型实例化涉及 byref 类型。” F# 中的解决方法是什么

    我有一些代码包装 TA Lib 很多包装器非常相似 let sma timePeriod int data float let mutable outStartIndex 0 let mutable outNbElement 0 let m
  • 从 C# 调用高阶 F# 函数

    给定 F 高阶函数 在参数中采用函数 let ApplyOn2 f int gt int f 2 和 C 函数 public static int Increment int a return a 我怎么打电话ApplyOn2 with I
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • Async.StartChild是否存在内存泄漏?

    当我运行以下测试 使用 F 2 0 构建 时 我得到 OutOfMemoryException 在我的系统上大约需要 5 分钟才能达到异常 如果它作为 x86 进程运行 则为 i7 920 6gb ram 但无论如何我们都可以在任务管理器中

随机推荐

  • java.library.path 中没有 opencv_java300 [重复]

    这个问题在这里已经有答案了 提前致谢 我有一个项目使用opencv 300 jar作为外部库 我在 eclipse 中尝试过这个网豆 当我从 IDE 本身运行我的项目时 这两种方法都可以成功运行 我希望我的项目将其导出为可运行 或可执行 j
  • Spring Data JPA – @Query – 不支持 DML 操作

    我在用 春季 4 3 9 发布 休眠 3 6 3 最终版 Spring Data JPA 1 6 4 RELEASE 用于公开 Rest 服务 我在用 Transactional and Modifying对于更新查询之一 尽管如此 我还是
  • Google 同意模式适用于 UA,但不适用于 GA4

    我无法使用 GA4 在没有 cookie 的情况下进行跟踪 我有 UA 和 GA4 媒体资源 我正在使用 gtag 同时跟踪它们 window dataLayer window dataLayer function gtag dataLay
  • 如何在make后运行.o文件

    我一直在尝试运行一个 C 程序https github com rinon Simple Homomorphic Encryption https github com rinon Simple Homomorphic Encryption
  • 从 AWS EC2 MySQL 数据库迁移到 Azure MySQL 数据库导致性能非常差且缓慢

    我们有一个非常小的 150MB 的 MySQL 数据库 它在 AWS t2 large 数据库作为自托管的情况下运行得非常快 硬件规格 Azure 2 个 vCPU 10 GB 内存 AWS 2 个 vCPU 8 GB 内存 不过 该公司决
  • 拉取部署、github 操作和 ssh 密钥

    比方说 我想使用 GitHub 操作和拉取策略来设置部署流程 所以我有一个 Ubuntu 服务器 我复制服务器的公共 ssh 密钥 将其添加到我的 GitHub 帐户 然后我可以从 Ubuntu 服务器克隆 构建并运行应用程序 那太好了 但
  • KeeperErrorCode = /admin/preferred_replica_election 的 NoNode

    当我启动kafka时 zookeeper发生错误 INFO Got user level KeeperException when processing sessionid 0x156028651c00001 type delete cxi
  • Xcode `Archive` 功能是否自动使用 `Release` 构建配置?

    我的标准工作流程 当将应用程序发布到 App Store 时 是按Product gt Archive从 Xcode 的菜单栏 我意识到我从来没有改变过 XcodeBuild Configuration在我的构建方案中 我已将其设置为Deb
  • 如何在 Swift 中实现 UIPageControl

    好吧 我在这里苦苦挣扎 无法找到有效的解决方案 我一直在自学 Swift 没有 Objective C 经验 我知道 我知道 在我的应用程序中 我有我的主要UIViewController 一个透明但从屏幕底部滑入的子视图 然后滑动子视图的
  • UISlider自定义图像和拇指高度?

    我正在创建 或尝试 自定义 UISlider 外观 仍然水平但更高 我有两个问题 1 这是我用来将图像放到滑块上的代码 UIImage minImage UIImage imageNamed sliderMin png UIImage ma
  • 如何将 Admin SDK api 添加到 android 项目

    我目前正在开发一个需要管理员和普通用户的 Android 应用程序 举例来说 管理员可以管理普通用户 例如删除 修改其内容 根据我的研究 firebase提供的Admin SDK API确实可以解决这个问题 但根据他们的文档 Admin S
  • 带 slimscroll 的水平滚动条

    我使用 slimscroll 来满足我的滚动需求 效果很好 现在我需要水平滚动 快速的谷歌搜索给了我一些 github 源代码中的参考结果和一些问题 这些问题表明已经添加了水平滚动支持 但我找不到示例 我查看了 javascript 文件
  • 流星构建中的箭头功能导致 Heroku 部署崩溃

    我在heroku上部署了一个使用meteor的js应用程序 构建在 localhost 上运行 但在 heroku 服务器上失败 我检查了日志并发现了这一点 js 312 12 2017 03 18T03 29 07 070711 00 0
  • Java swing 1.6 像firefox bar一样的文本输入

    我想创建一个看起来像 Firefox 地址栏的文本小部件 组件 我的意思是一个文本字段 它允许我在字段内放置小按钮 例如取消 重新加载 我尝试通过创建自定义布局管理器来自定义 JLayeredPane 该布局管理器最大化文本字段 并将其余部
  • Android:带有 RippleEffect 和 StateListAnimator 的

    我有一个布局 其中包括另一个布局
  • firebase 是否处理推送通知?

    我正在调查 firebase 和 Angularfire 是否适合我即将进行的项目 要求之一是当应用程序关闭时向用户发送新的私人消息时通知用户 即 推送通知 firebase 可以处理这个问题吗 是的 不过 直到最近才出现这种情况 感谢 l
  • 检查输入是否在 C++ 的限制范围内

    我需要创建多个函数来检查输入是否有效 这是我的一些代码 bool IsValidRange signed char s bool isValid true if s gt SCHAR MIN s lt SCHAR MAX isValid f
  • 在单个 Activity 中的 Fragment 之间切换

    我想创建一个Activity它显示了用户可以浏览的一种菜单 通过单击一个项目 将显示一个新屏幕 为用户提供更多选项 类似于向导 我想使用这个来实现Fragments 但这对我不起作用 现在我有 main xml
  • 如何从Flash/AS3找到用户Temp文件夹的路径?

    如何从 Flash AS3 找到用户临时文件夹的路径 例如 C Users lisnil AppData Local Temp 它需要在任何版本的 Windows 上运行 至少是 XP Vista 和 7 您无法通过 Flash 那样访问文
  • F#:将字符串选项转换为字符串的最短方法

    目标是转换一个string option这是通过一些很好的类型计算得出的一个简单的string然后可以传递到 UI printf URL 其他只想要一个字符串并且对选项类型一无所知的东西 None应该变成空字符串 显而易见的方法是做一个ma