如何从复合泛型类型中检索值?

2024-04-20

如何从泛型中检索值?

具体来说,我正在尝试以下操作:

// Test
let result = Validate goodInput;;

// How to access record??
let request = getRequest result

这是代码:

type Result<'TSuccess,'TFailure> = 
    | Success of 'TSuccess
    | Failure of 'TFailure

let bind nextFunction lastFunctionResult = 
    match lastFunctionResult with
    | Success input -> nextFunction input
    | Failure f -> Failure f

type Request = {name:string; email:string}

let validate1 input =
   if input.name = "" then Failure "Name must not be blank"
   else Success input

let validate2 input =
   if input.name.Length > 50 then Failure "Name must not be longer than 50 chars"
   else Success input

let validate3 input =
   if input.email = "" then Failure "Email must not be blank"   
   else Success input;;

let Validate = 
    validate1 
    >> bind validate2 
    >> bind validate3;;

// Setup
let goodInput = {name="Alice"; email="[email protected] /cdn-cgi/l/email-protection"}
let badInput = {name=""; email="[email protected] /cdn-cgi/l/email-protection"};;

// I have no clue how to do this...
let getRequest = function
    | "Alice", "[email protected] /cdn-cgi/l/email-protection" -> {name="Scott"; email="[email protected] /cdn-cgi/l/email-protection"}
    | _ -> {name="none"; email="none"}

// Test
let result = Validate goodInput;;

// How to access record??
let request = getRequest result
printfn "%A" result

您的意思是如何从结果类型中提取记录?通过模式匹配,这就是您已经在做的事情bind.

let getRequest result = 
    match result with
    | Success input -> input 
    | Failure msg -> failwithf "Invalid input: %s" msg

let result = Validate goodInput
let record = getRequest result

这将返回记录或引发异常。一旦你有了自己的想法,你将如何处理成功和失败的案例Result- 这可能会引发异常,或将其转变为选项,或记录消息并返回默认值等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从复合泛型类型中检索值? 的相关文章

  • 在 F# 列表中键入扩展名

    假设我有一个类型 let MyType some info 但是 它通常用于列表 MyType list 所以我可以定义 let MyTypeList MyType list 有没有办法在 MyTypeList 上定义类型增强 我的实际情况
  • 如何从复合泛型类型中检索值?

    如何从泛型中检索值 具体来说 我正在尝试以下操作 Test let result Validate goodInput How to access record let request getRequest result 这是代码 type
  • 没有带有常量“模板参数”的 F# 泛型?

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

    我在 C 中有这个操作方法 public ActionResult Index ViewBag Message Hello return View 这个视图 Index cshtml h2 ViewBag Message h2 这会在页面上
  • 类型 x 比值更难访问

    这是我的代码的抽象 module RootModule module private SubModule I want everything in this module to be inaccessible from outside th
  • F# 中的异步 EF 查询

    在使用 EF6 的 C 中 我可以轻松地进行如下异步操作 using var context new MyDbContext var item await context SomeEntities Where e gt e Id 1 Fir
  • 如何在 x 轴上显示每个元素的标签?

    我有包含文件名和编号的元组序列 我想绘制柱形图 其中 X 轴上有文件名 我的问题是现在 X 轴下仅显示 3 个标签 文件名 这可能是因为屏幕无法容纳更多内容 还是X轴间隔错误 如何让图表显示所有文件名 也许有办法将这些标签逆时针旋转 90
  • F#、FParsec 和递归调用流解析器(第二次)

    感谢您的回复我的第一篇文章 https stackoverflow com questions 26853718 f fparsec and calling a stream parser recursively and 我的第二篇文章 h
  • 如何搭建Windows Phone开发环境并使用F#开发应用程序?

    我已经下载了Windows Phone开发工具 但我不知道如何使用F 来开发应用程序 目前是C 将 F 和 Windows Phone 模板安装到 Visual Studio 中可以让生活变得更轻松 如果您打开 Visual Studio
  • 在 F# 中实现返回 Task 的 C# 方法

    我正在 F 中创建一个类型 该类型继承自 C 类 该类公开返回的方法Task
  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • 管道序列中的异常处理

    我正在开发一个基本的 2D CAD 引擎 管道操作符显着改进了我的代码 基本上 有几个函数从空间中的点 x y 开始 并在多次移动操作后计算最终位置 let finalPosition startingPosition gt moveByL
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • F# 对于 OO 或命令式来说缺少什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当两个模式共享“when”子句时,模式匹配不完整

    A 共同的惊喜 https stackoverflow com q 18691622 2314532对于 F 初学者来说 以下事实是不完全匹配 let x y 5 10 match something with when x lt y gt
  • F# nameof 运算符不是一等函数

    我正在使用 F 4 7
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • 将 C# 代码转换为 F#(if 语句)

    我想知道如何转换此代码逐行从 C 到 F 我不想使用任何类型的 F 习惯用法或类似的东西 我想了解如何直接映射C 的构造到 F 这是 C 代码 requires l Length gt 0 int GetMinimumValue List
  • F# 中的数组初始化

    如何根据给定的记录类型在 F 中创建和初始化数组 假设我想创建一个包含 100 个 record1 记录的数组 e g type record1 value1 string value2 string let myArray Array i
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示

随机推荐

  • 未定义的方法`fog_host='

    当我尝试运行我的应用程序时 出现以下错误 config initializers carrierwave rb 4 未定义方法 fog host CarrierWave Uploader Base Class NoMethodError 这
  • JavaFX GridPane:如果内容被禁用且不可见则缩小

    如果 GridPane 行的内容既禁用又不可见 是否可以缩小该行 当我将节点设置为disable true和visible false时 单元格仍然占用空间 如果我有 8 行 并且只有第一行和最后一行可见 我不希望空行占用太多空间 好像只有
  • OpenGL 超级采样抗锯齿?

    在办公室 我们正在使用旧的 GLX Motif 软件 该软件使用 OpenGL 的 AccumulationBuffer 来实现保存图像的抗锯齿功能 我们的问题是Apple从其所有驱动程序中删除了AccumulationBuffer 从OS
  • 如何为所有用户设置所有 ulimit 不受限制?

    是的 我想删除all ulimits并将它们设置为unlimited 我该怎么做呢 谢谢 使用这样的东西 for opt in ulimit a sed s a z a zA Z 1 do ulimit opt ulimited done
  • Android中如何增加ScrollView的高度?

    嗨朋友们 我在用GridView里面一个ScrollView用于显示图像 在 GridView 中 我有 16 个动态添加的图像 但是ScrollView不显示全部 16 张图像 参见屏幕截图 我想要ScrollView显示整体GridVi
  • C#:运行 shell 命令时出现问题

    我试图让 PHP 解析器运行一个页面 然后将结果返回到我的服务器 但是当我通过代码运行该命令时 它什么也不返回 我知道该命令是正确的 因为如果我使用相同的路径手动运行它 它就可以正常工作 这是我的代码 var p new Process S
  • 线程 - 访问资源避免饥饿

    我知道这不是一个 作业助手网站 但最近几天我疯了 因为我必须实现对资源的访问以避免饥饿 但我不知道如何做到这一点 谁能帮助我提供一些应用程序示例或文档 分配是 资源可以由两种类型的进程使用 黑色和白色 当白色进程使用该资源时 黑色进程就不能
  • 自定义 Bootstrap 4 中的折叠过渡

    Bootstrap 4 使用该类 collapsing在打开 关闭 collapse element 时对它的宽度 高度进行动画处理 不幸的是 实际的更改是通过将宽度 高度作为内联样式添加到元素并在过渡的开始和结束处添加和删除类来实现的 因
  • php将所有链接转换为绝对url

    我正在用 php 编写一个网站爬虫 并且我已经有了可以从网站提取所有链接的代码 问题 网站使用绝对 URL 和相对 URL 的组合 示例 http 替换为 hxxp 因为我无法发布超链接 hxxp site com site com sit
  • 服务器<->设备的数据同步框架/算法?

    我正在寻求实现服务器和分布式客户端之间的数据同步 服务器上的数据源是mysql 上面是django 客户可能会有所不同 更新可以在客户端或服务器上进行 并且服务器和客户端之间的连接不可靠 例如 可以在断开连接的手机上进行更改 当手机再次连接
  • 如何“实时”检查输入的内容

    我正在开发一个网络表单 它已经设置了一个文本字段来接收预期的数值 如果此字段的内容不是数字 则表单不会提交 但没有放置错误消息来让用户知道他们填写了错误的此字段 我的问题是 有没有办法实时检查输入内容并采取措施告诉用户他们没有正确填写 如果
  • 如何抑制某些文件的智能感知错误?

    Visual Studio 2015 提供了在同一窗口中显示 Intellisense 错误的选项 该窗口还显示常规生成错误 我喜欢它 因为我什至不需要构建来查看代码的语法是否正确 然而 该窗口还显示一个误报错误 该错误似乎与智能感知错误有
  • 如何使用 iOS 7 自定义过渡在顶部呈现半模态视图控制器

    我将如何在主视图控制器的顶部呈现 半视图 控制器 要求 呈现在主视图控制器顶部滑动的第二个视图控制器 第二个视图控制器应该只显示主视图控制器的一半以上 主视图控制器应在第二视图控制器后面保持可见 透明背景 下面不显示黑色 第二个视图控制器应
  • HTML 多重选择值作为 GET 变量中的逗号分隔字符串

    我设置了一个多选列表 如下所示
  • Java 9 HttpClient 挂起

    我正在尝试HTTP 2客户来自jdk 9 ea 171 代码取自这个例子 https labs consol de development 2017 03 14 getting started with java9 httpclient h
  • PySide.QtGui RuntimeError:对象基类的“__init__”方法未调用...但它是

    一些环境基础知识 Python版本 3 4 2 操作系统 Windows 8 1 到目前为止的搜索 我怀疑这另一个问题 https stackoverflow com questions 12280371 python runtimeerr
  • 使用 R 计算边际税率

    我正在编写一个函数来根据给定的收入水平计算所欠税款澳大利亚的边际税率 https www ato gov au rates individual income tax rates 我编写了该函数的一个简单版本 该函数使用以下代码得出正确的应
  • 如何在保存之前对 Emacs 中更改的行执行操作?

    我想添加一个 before save hook 我可以在其中仅对自上次保存以来更改的行执行一些操作 例如 删除尾随空格 检查缩进等 我不想对整个文件执行此操作 并且我知道每个选项都有单独的选项 只是为了删除所有更改行的尾随空格 等等 但我想
  • 如何使用 Apache PDFBox 将 .png 图像添加到 pdf

    当我尝试使用 pdfBox 绘制 png 图像时 页面保持空白 有没有办法使用pdfBox插入png图像 public void createPDFFromImage String inputFile String image String
  • 如何从复合泛型类型中检索值?

    如何从泛型中检索值 具体来说 我正在尝试以下操作 Test let result Validate goodInput How to access record let request getRequest result 这是代码 type