F#,在不使用临时变量的情况下通过管道转发匹配情况

2024-02-07

我想在不使用临时变量或 lambda 的情况下将变量通过管道转发到匹配情况。想法:

let temp =
    x 
    |> Function1
    |> Function2
    // ........ Many functions later.
    |> FunctionN

let result =
    match temp with
    | Case1 -> "Output 1"
    | Case2 -> "Output 2"
    | _ -> "Other Output"

我希望写出类似下面的东西:

// IDEAL CODE (with syntax error)
let result =
    x
    |> Function1
    |> Function2
    // ........ Many functions later.
    |> FunctionN
    |> match with   // Syntax error here! Should use "match something with"
        | Case1 -> "Output 1"
        | Case2 -> "Output 2"
        | _ -> "Other Output"

我拥有的最接近的东西是使用 lambda。但我认为下面的代码也不是那么好,因为我仍在“命名”临时变量。

let result =
    x
    |> Function1
    |> Function2
    // ........ Many functions later.
    |> FunctionN
    |> fun temp -> 
        match temp with   
        | Case1 -> "Output 1"
        | Case2 -> "Output 2"
        | _ -> "Other Output"

另一方面,我可以直接用一大块代码替换“temp”变量:

let result =
    match x 
          |> Function1
          |> Function2
          // ........ Many functions later.
          |> FunctionN with
    | Case1 -> "Output 1"
    | Case2 -> "Output 2"
    | _ -> "Other Output"

是否可以编写类似于代码#2 的代码?或者我必须选择代码#3 或代码#4?谢谢。


let result =
    x
    |> Function1
    |> Function2
    // ........ Many functions later.
    |> FunctionN
    |> function  
        | Case1 -> "Output 1"
        | Case2 -> "Output 2"
        | _ -> "Other Output"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F#,在不使用临时变量的情况下通过管道转发匹配情况 的相关文章

  • 如何更改 Rx Builder 实现来修复堆栈溢出异常?

    我正在尝试提出一个 Rx Builder 以在 F 计算表达式语法中使用反应式扩展 我该如何修复它 以免堆栈崩溃 就像下面的 Seq 例子一样 是否有计划提供 RxBuilder 的实现作为响应式扩展的一部分或作为 NET Framewor
  • 如何在 suave webpart 中设置 Json 响应

    我从 Suave 和 F 开始 我正在尝试在我的 web 部件中传递一个 json 序列化对象以在我的响应中获取它 在 php 中我有这个 player1Key hdegftzj25 gameKey aegfhzkfszl
  • F# 2010 Seq.generate_using

    Visual Studio 2010 中的 Seq generate using 是否有替代 解决方法 FSharp PowerPack dll 不适用于 2010 AFAIK 很抱歉 2010 年的 PowerPack 尚未上市 我不记得
  • F# 参数传递

    我一直认为 F 有两种不同的方式来传递参数 柯里化风格和元组风格 这实际上是正确的吗 是不是很简单一种风格 柯里化风格和参数可以是简单值或元组 e g someFunc a b 这不是一个函数吗one咖喱风格的参数恰好是一个元组 因此允许我
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • `ImmutableSortedSet` 和 fsharp `Set` 有什么区别?

    BCL引入了一组Immutable Collections http blogs msdn com b bclteam archive 2012 12 18 preview of immutable collections released
  • 从 F# 调用 Newtonsoft.Json 出现意外结果

    我没有从该 F 代码中获得预期结果 我希望 t 包含调用 JsonSchema Parse json 的结果 但它是空的 我究竟做错了什么 open Newtonsoft Json open Newtonsoft Json Schema l
  • F# 命名约定

    F 是否有 官方 命名 大小写约定 我总是怀疑是否使用 C 风格 Class MyFunctionName or Module my function name 在 F 中 您应该混合 BCL 类和 F 库类 它们具有不同的大小写 并且代码
  • 带表达式的 F# 类型定义

    是否可以这样表达 type id int gt 0 我知道它不可能静态执行 因为这意味着 F 具有依赖类型 在 C 中 我习惯于使用代码契约来执行此类操作并获得运行时强制执行 我正在这里寻找类似的东西 Thanks 编辑 感谢您提供的所有答
  • 如何解决 FParsec 错误“组合器‘许多’已应用于解析器,该解析器在不消耗...的情况下成功”

    我有一个看起来足够简单的解析器 我将此子解析器添加到末尾以提供有关一般解析错误的信息 因为所有其他子解析器都失败了 Read the rest of a line as an error let readError parse let re
  • F# 和 MEF:导出函数

    因此 我试图在 F 控制台应用程序中运行这个简单的测试 open System Reflection open System ComponentModel Composition open System ComponentModel Com
  • 如何编写强制执行复杂模式的 F# 类型提供程序?

    就在最近 我处理了一些交通和旅行信息的数据 即数据Datex2 http www datex2 eu content datex ii xml schema 21格式 该项目时间不长 现在已经结束 我像往常一样继续生成了一堆强类型 C 类x
  • F# 引用的另一个限制?

    今天早些时候 我遇到了 F 引用的限制 并在这里提出了一个问题 F 引号 变量可能会转义作用域 https stackoverflow com questions 6414185 f quotations variable may esca
  • F# 静态成员类型约束

    我正在尝试定义一个函数 factorize 它使用类似于 Seq sum 的结构类型约束 需要静态成员 Zero One 和 以便它可以与 int long bigint 等一起使用 似乎无法获得正确的语法 并且无法找到有关该主题的大量资源
  • F# 中的自定义路由事件

    我正在尝试翻译这段 C 代码 https msdn microsoft com en us library ms752288 aspx 到目前为止我的尝试 type MyButtonSimple as self inherit Button
  • 了解 F# 尾递归

    最近在学习F 我尝试以不同的方式解决问题 像这样 0 1 2 3 4 5 6 7 8 gt 0 1 2 3 4 5 6 7 8 head recursive let rec toTriplet v1 list match list with
  • obj[] 和 string[] 作为参数

    我在用Microsoft FSharp Reflection FSharpValue MakeUnion这需要一个Reflection UnionCaseInfo and an obj 可以为空 作为参数 但是 我得到了Type misma
  • F# 使用 while 循环

    我有一个数据读取器 我想从中返回行集合 在阅读了一天的书籍后 我无法找到在 f 中执行此操作的最佳方法 我可以在 F 中以正常的 C 方式进行操作 但这不是我使用 f 的原因 这就是我想要实现的目标 let values while rea
  • 如何让一条记录实现一个接口?

    如果我有一个界面 type IData abstract member firstName string abstract member lastName string 如何定义符合此接口的记录类型 我尝试了如下所示 gt type Dat
  • 从静态成员访问 let 绑定字段

    有没有办法从静态成员访问 let 绑定字段 下面给出了指示的错误 type Foo x let x x static member test let foo Foo System DateTime Now Month printfn A f

随机推荐

  • MVVM 和导航服务

    实现任何模式的众多好处之一是在应用程序的不同层之间分离关注点 对于 Silverlight 和 MVVM 我认为 NavigationService 属于 UI 如果 NavigationService 属于 UI 那么它应该在后面的 XA
  • Ruby 数组 concat 与 + 速度?

    我对 Ruby 数组进行了小型性能测试concat vs 操作和concat 太快了 然而我不清楚为什么concat 有那么快吗 有人可以帮忙吗 这是我使用的代码 t Time now ar for i in 1 10000 ar ar 4
  • 如何将场景缩放至全屏?

    我目前正在学习 Phaser 3 但是 我能找到的所有文档都是关于 Phaser2 的 创建游戏时 您必须在配置中设置宽度和高度 var config type Phaser AUTO width 800 height 600 如何将场景缩
  • 我在微风中未映射的属性似乎不适用于投影

    我有以下实体 public class Invoice Key public int Id get set public DateTime ArchiveDate get set public DateTime ClotureDate ge
  • 从不同路径使用 .babelrc

    有没有办法向 babel cli 提供 babelrc 文件的路径 就像是 babel src out dir lib config random folder sub folder babelrc 您可以将 babelrc 文件放在其他
  • SpriteKit/Metal 内存泄漏但没有任何反应

    我似乎无法追踪内存泄漏 Instruments 看到它 并将其报告为 jet buffer Metal 但我不知道这具体指向什么 它经常发生 我已经尝试了一切 删除我的所有节点 删除物理主体 但它似乎仍然存在 我在更新或任何其他游戏周期方法
  • 是否有一个 JavaScript 引擎可以让我运行我的代码而不必被迫使用浏览器?

    有没有什么方法可以编写和运行 JavaScript 代码 而无需运行浏览器并使用其 JavaScript 引擎 Thanks 我很惊讶还没有人指出这一点 Windows 包含一个可以从命令行使用的 Javascript 引擎 自 Windo
  • 如何让 gitlab-ci-runner DinD 图像缓存中间图像?

    我有一个 Dockerfile 从安装 texlive full 包开始 该包很大并且需要很长时间 如果我docker build它在本地 安装后创建的中间映像会被缓存 后续构建速度很快 但是 如果我推送到我自己的 GitLab 安装并且
  • android listview onItemClickListener 失败

    我使用以下代码来侦听我的列表视图 onItemClick 事件 没有发生编译错误 当我点击任何列表项时什么也没有发生 我不知道为什么Orz 有人能告诉我为什么 吗 mp3 listView setOnItemClickListener ne
  • 填充 NSString 不起作用

    我已阅读该内容以向左填充NSString你需要做的就是这样 NSString paddedStr NSString stringWithFormat 20 20 20 20 aString anotherSting 但是 那是行不通的 我不
  • SwiftUI 中可选数据类型的选择器?

    通常我可以在 SwiftUI 中显示这样的项目列表 enum Fruit case apple case orange case banana struct FruitView View State private var fruit Fr
  • 让 nokogiri 使用较新版本的 libxml2

    我一直试图在我的计算机 Mountain Lion 上安装 Nokogiri 以与 rspec 和 capybara 一起使用 但对于我来说 我无法让它正常运行 据我所知 问题在于 nokogiri 使用了错误版本的 libxml2 到目前
  • 如何在android中以编程方式打开文件夹?

    我正在开发一个打开文件夹的Android应用程序 我的问题是如何在 Android 中以编程方式打开文件夹 我尝试了 stack overflow 中提供的所有解决方案并在 Google 中搜索 但找不到解决方案 有人可以给我答案吗 提前致
  • Wifi 睡眠,即使有锁

    总结 即使获取了wifi锁 当手机使用电池运行时 wifi也会在一段时间后断开 我已将问题简化为带有启动线程的按钮的单个活动 它只是向 PC 上运行的回显服务器发送 100 000 个字符串 每 100 毫秒一个字符串 请参阅下面的代码 我
  • 在 JavaScript 中从表格单元格获取值...而不是 jQuery

    我不敢相信这花了我多长时间 但当我使用 JavaScript 迭代表格时 我似乎无法弄清楚如何从 HTML 表格中提取单元格值 我正在使用以下内容进行迭代 var refTab document getElementById ddRefer
  • Android (Lollipop) EditText onFocus 多次触发

    我有几个带有 onFocusChangeListener 的 EditText When the field gains or loses focus txtMinimumValue setOnFocusChangeListener new
  • 可以在C++中使用正则表达式吗?

    重复 C 中有一个使用模式匹配 使用正则表达式 的函数吗 https stackoverflow com questions 329517 there is a function to use pattern matching using
  • 将函数动态应用到 Postgres 表中的所有列

    使用 Postgres 13 1 我想对表的所有列应用前向填充函数 前向填充函数在我之前的问题中进行了解释 如何将前向填充作为 PL PGSQL 函数 https stackoverflow com questions 70987689 h
  • 创建应用程序域并加载程序集

    我想创建一个具有默认权限的应用程序域 并以默认权限将程序集加载到应用程序域中 并执行程序集中的方法 你可以看看以下文章 http msdn microsoft com en us library ms173139 aspx在 MSDN 上
  • F#,在不使用临时变量的情况下通过管道转发匹配情况

    我想在不使用临时变量或 lambda 的情况下将变量通过管道转发到匹配情况 想法 let temp x gt Function1 gt Function2 Many functions later gt FunctionN let resu