如何在 f# 中执行多行 lambda 表达式?

2024-01-25

我该如何在 F# 中执行此操作 (C#)

public class MyClass
{
    void Render(TextWriter textWriter)
    {
        Tag(() =>
                {
                    textWriter.WriteLine("line 1");
                    textWriter.WriteLine("line 2");
                });
        Tag(value =>
                {
                    textWriter.WriteLine("line 1");
                    textWriter.WriteLine(value);
                }, "a");
    }

    public void Tag(Action action)
    {
        action();
    }
    public void Tag<T>(Action<T> action, T t)
    {
    action(t);
    }
}

F# 中的多行 lambda 只是

(fun args ->
    lots
    of
    code
    here
)

整个代码就像这样

open System.IO

type MyClass() as this =
    let Render(tw : TextWriter) =
        this.Tag(fun() ->
            tw.WriteLine("line1")
            tw.WriteLine("line2")
        )
        this.Tag(fun(value : string) ->
            tw.WriteLine("line1")
            tw.WriteLine(value)
        , "a"
        )
    member this.Tag(action) = 
        action()
    member this.Tag(action, x) =
        action(x)

假设我没有犯抄写错误。 (我在公共接口中使用了 F# 函数类型而不是 Action 委托。)

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

如何在 f# 中执行多行 lambda 表达式? 的相关文章

  • Haskell - lambda 表达式

    我试图了解什么是有用的以及如何在 Haskell 中实际使用 lambda 表达式 我不太明白使用 lambda 表达式相对于定义函数的约定方式有何优势 例如 我通常会执行以下操作 let add x y x y 我可以简单地打电话 add
  • F# 检查列表是否为空

    作为 F 新手 我正在尝试实现一个简单的函数 该函数将索引和列表作为参数 然后返回给定索引的列表值 let rec getElementAtIndex index int list a list match index list with
  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 使用不区分大小写的比较从集合中减去记录

    我有一组记录 type Person Name string Age int let oldPeople set Name The Doctor Age 1500 Name Yoda Age 900 与上面的硬编码示例不同 这组数据实际上来
  • 使用表达式获取方法的名称

    我知道网站上有一些关于此问题的答案 如果这有任何重复 我深表歉意 但我发现的所有答案都没有做我想做的事情 我正在尝试指定方法信息 以便我可以通过不使用字符串以类型安全的方式获取名称 所以我试图用一个表达式来提取它 假设我想获取此接口中方法的
  • 带表达式的 F# 类型定义

    是否可以这样表达 type id int gt 0 我知道它不可能静态执行 因为这意味着 F 具有依赖类型 在 C 中 我习惯于使用代码契约来执行此类操作并获得运行时强制执行 我正在这里寻找类似的东西 Thanks 编辑 感谢您提供的所有答
  • 为什么《小阴谋家》中的所有 lambda 表达式都是如此?

    在从 SICP 学习了一些计划之后 我开始阅读 小计划 我觉得这本书很有趣 并且已经完成了大约四分之一 我注意到我可以在不使用 lambda 的情况下编写许多 大多数 全部 解决方案 而 The Little Scheduleralways
  • 为什么无法在 F# 项目中添加子文件夹?

    在大多数 NET项目中 我可以使用文件夹来组织代码文件 在 C 中 我不能 但过滤器最终会扮演相同的角色 但是 在 Visual Studio 2010 中的 F 中 我不能 每个代码文件都直接显示在项目目录中 为什么这个功能不可用 组织包
  • F# 静态成员类型约束

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

    我对 的定义和用法感到困惑 Stream collect Supplier
  • 如何从 C# 可移植类库 (PCL) 添加对 F# 可移植库的引用

    我有一个项目 其中包含两个 F 项目和一个 C 项目 我想在其中编写一些 XUnit 测试 FS PL F 3 1 3 3 1 0 可移植库 FS PL Legacy F 31 2 3 5 1 可移植库 旧版 测试 C NET 4 5 Wi
  • 使用 gradle-retrolambda 和 Lightweight-Stream-API 过滤 Android 中的对象列表

    我正在尝试在我的 Android 应用程序中过滤 Java 中的对象列表 为此我遵循这个答案 https stackoverflow com a 13140130 3546389 Java 8建议 但由于Android SDK不支持Lamb
  • 基于函数签名的模式匹配

    在 F 中 您可以对函数签名进行模式匹配 我想用一个函数来装饰多个函数 该函数测量函数的执行情况并调用 statsd 我当前的功能是 let WrapFunctionWithPrefix metrics Metric Client IRec
  • Linq lambda表达式多对多表选择

    我有三个表 其中两个是多对多关系 Picture 这是中间mm表中的数据 Edit 到这里 我得到正确的 4 行返回 但它们都是相同的结果 我知道我需要返回 4 行 但有不同的结果 return this mediaBugEntityDB
  • 如何从 C# 调用 F# 类型扩展(静态成员函数)

    FSharp 代码的结构如下 我无法控制源代码 namespace FS
  • 合并具有公共字段的列表的最快方法?

    我正在学习 F 并且正在做赔率比较服务 ala www bestbetting com 以将理论付诸实践 到目前为止 我有以下数据结构 type price Bookie string Odds float32 type selection
  • 使用 System.Text.Json 序列化记录成员

    我在记录中使用自我引用成员 如下所示 type Payload Id Guid member x DerivedProperty Derived Property using id x Id NewtonSoft Json会序列化这个 但是
  • 连接两个 Func 委托

    我有这个课程 public class Order int OrderId get set string CustomerName get set 我也声明了以下变量 Func
  • 使用匿名类型的 C# LINQ 构建表达式

    我有只使用一个属性 名称 构建列表的代码 如何修改代码 以便它可以构建具有两个属性 Name 和 Test Result 的列表 我知道可以使用匿名类型来执行此操作 但是如何将它们放入动态表达式中 这是我的代码 string item Na
  • 在构建过程中引用自身内部的记录

    我正在尝试创建一条记录 该记录在同一构造函数中使用先前定义的字段之一来计算另一个字段的值 例如 myRecordType Foo int Bar int myRecord Foo 5 Bar Array init Foo fun i gt

随机推荐