在 F# 中,如何生成 Func 类型的表达式?

2024-03-29

我正在使用需要 Func 类型值的 api。 (具体来说,我想打电话给ModelMetadataProviders.Current.GetMetadataForType() http://msdn.microsoft.com/en-us/library/ee703467.aspx.

如何在 F# 中构造该值?


当调用一个接受任何委托的方法时Func您不需要显式创建委托,因为 F# 隐式将 lambda 表达式转换为委托类型(在成员调用中)。我认为只用 lambda 函数调用该方法应该可以工作(如果不行,您可以分享错误消息吗?)

这是一个简单的例子来演示这一点:

type Foo() = 
  member x.Bar(a:System.Func<obj>) = a.Invoke()

let f = Foo()
let rnd = f.Bar(fun () -> new Random() :> obj)

对于你的情况,我想这样的事情应该有效:

m.GetMetadataForType((fun () -> <expression> :> obj), modelType)

请注意,您需要显式向上转换(expr :> obj),以确保 lambda 函数返回正确的类型 (obj)。如果要将 lambda 函数分配给本地值,请使用let,那么它就不起作用,因为隐式转换仅在直接作为参数传递时才起作用。然而,在这种情况下,它会使代码变得更好一些。

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

在 F# 中,如何生成 Func 类型的表达式? 的相关文章

  • Fable F# > js 编译多个.fsx 文件

    如何编译多个 fsx使用寓言的文件 我 天真地 尝试在 fable config 文件中传递它们的数组 如下所示 outDir app projFile app index fsx app testmod fsx sourceMaps tr
  • 不可为空字符串的 F# 类型别名

    我的代码中有一些域类型 我用它们来区分不同类型的字符串 因此编译器可以阻止我 例如以错误的顺序传递参数 type Foo string type Bar string let baz foo Foo bar Bar printfn A A
  • 为什么没有List.skip和List.take?

    为什么没有List skip和List take 当然有 Seq take 和 Seq skip 但它们不会因此创建列表 一种可能的解决方案是 mylist gt Seq skip N gt Seq toList 但这会创建第一个枚举器 然
  • 在可移植类库中使用 F# JsonProvider 失败

    我正在尝试使用 JsonProvider 当我调用它的函数时出现以下错误 System TypeInitializationException was unhandled Message An unhandled exception of
  • F# 图表示例

    我想使用内置功能或免费库在 F 中做一些基本的图表 我会对一个非常基本的例子感到非常非常满意 如果可能的话 饼图 示例数据 John 34 Sara 30 Will 20 Maria 16 其中整数是饼图中要表示的百分比 我最近安装了 VS
  • 函数式 GUI 编程可能吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近发现了 FP bug 试图学习 Haskell 到目前为止所看到的东西给我留下了深刻的印象 一流的函数 惰性求值和所有其他好处 我还不是专
  • F#:将字符串选项转换为字符串的最短方法

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

    如果我使用 F 解释器 我可以定义一个简单的函数 如下所示 gt Function to check if x is an integer multiple of y gt let multipleOf x y x y 0 val mult
  • 如何统计字符串中特定字符的出现次数

    我不知道从哪里开始检查字符串中特定字符的 n 次出现 我已经列出了我认为是该功能框架的基本轮廓 但我不确定内容是什么 let countCharFromNth getStr string chkdChar char if getStr Le
  • 如何在 F# 列表和 F# 元组之间进行转换?

    有没有办法在 F List 和 F Tuple 之间进行转换 例如 1 2 3 gt 1 2 3 1 2 3 4 gt 1 2 3 4 我需要两个函数来做到这一点 let listToTuple list let tupleToList t
  • 如何使用 printf 自定义自定义类型的输出?

    我已经阅读了很多内容专家 F 并正在致力于构建一个实际的应用程序 在调试时 我已经习惯了传递这样的 fsi 命令 以使 repl 窗口中的内容清晰可见 fsi AddPrinter fun x myType gt myType ToStri
  • 与 F# List.nth 的参数顺序混淆

    List nth is T 列表 gt 整数 gt T 而不是标准int gt T 列表 gt T like Seq nth 这使得管道有些尴尬 难道幕后有什么事情吗 我不知道为什么 可能是为了ocaml兼容性 http www csc v
  • 如何搭建Windows Phone开发环境并使用F#开发应用程序?

    我已经下载了Windows Phone开发工具 但我不知道如何使用F 来开发应用程序 目前是C 将 F 和 Windows Phone 模板安装到 Visual Studio 中可以让生活变得更轻松 如果您打开 Visual Studio
  • Async.TryCancelled 不适用于 Async.RunSynchronously

    我尝试创建一个根据用户交互更新 UI 的代理 如果用户单击按钮 则应刷新 GUI 模型的准备需要很长时间 因此希望如果用户单击其他按钮 则取消准备并开始新的准备 到目前为止我所拥有的 open System Threading type p
  • FParsec:如何组合解析器以便它们以任意顺序匹配

    任务是找到特定的键值对并解析它们 这些对可以按任何顺序出现 我的部分工作尝试 open FParsec type Parser lt a gt Parser lt a unit gt type Status Running Done typ
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • 按属性值选择 XML 节点

  • 通用高阶函数

    当我将泛型函数作为本地值传递时 但在作为参数传递时却不能使用具有不同类型参数的泛型函数时 是否有原因 例如 let f id let g x y f x f y g 1 2 工作正常 但如果我尝试将函数作为参数传递 let g f x y
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • 该表达式的类型为 int,但此处与 unit 类型一起使用

    我试图在 F 中获得与此 vb net 代码完全相同的 非功能性的 Function FastPow ByVal num As Double ByVal exp As Integer As Double Dim res As Double

随机推荐

  • ModuleNotFoundError:使用tensorflow 2.6时没有名为“keras”的模块

    我创建了一个新的 conda 环境 conda create name tf tensorflow 2 6 并尝试编译 import tensorflow as tf model tf keras models Sequential 导致
  • 如何设置组合框宽度以适合最大的项目

    我希望我的ComboBox必须适应其width到最长的String Item我的清单中 代码示例 ComboBox model Banana Apple ThisIsTheLongestWordThatIHave Coconut 知道如何做
  • Android 中写入锁定文件

    我将一些数据存储在 SD 卡上的文件上 并从不同的线程读取相同的文件 为了避免读取和写入的竞争条件 我想在两种情况下锁定文件 读取和写入 我心里有两个选择 1 我可以使用同步来做到这一点 2 我可以使用文件锁来做到这一点 我应该选择哪一个
  • 批量插入 mysql - 我可以使用忽略子句吗?有限制吗?批量插入的记录?

    我有一堆数据想要插入 我决定对 mysql 使用批量插入 插入朋友 请求者 好友 值 value1 value2 value2 value1 value3 value4 value4 value3 我想了解以下信息 1 我可以使用忽略吗 例
  • Json允许错误

    这个错误在我们的 MVC 应用程序中随机出现 有时做同样的事情不会 有时却会 有谁知道这是否与任何可以简单解决的问题有关 或者这是否是你们很多人都见过的常见现象 System InvalidOperationException This r
  • 注册 COM 互操作

    当选中构建属性中的 Register for COM Interop 选项时 出现错误 无法注册程序集访问 被拒绝 取消选中该选项时 项目构建时不会出现任何错误 但我的要求是注册 COM 对象 因为我需要在 VB 中使用相同的对象 谁能帮我
  • 与 WPF 和数据绑定一起使用的简单 CRUD

    我是用于 Windows 应用程序开发的 WPF 新手 只是想先将其介绍一下 我正在使用 Visual Studio 2010 和 NET Framework 4 0 我正在开发一个相当简单的管理工具 为了简单起见 假设我正在处理员工数据
  • 全屏嵌入 Bing 地图

    有人知道是否可以全屏嵌入 bing 地图吗 这样地图就可以始终填充背景并简单地在顶部覆盖一些元素 我似乎无法用 100 iframe 实现这一点 而且 bing 的帮助也没有那么有帮助 谢谢 如果我没理解错的话 你想要实现让地图填满整个屏幕
  • C11 结构继承与匿名结构

    I saw this way https stackoverflow com a 14523823 108802实施某种struct匿名继承struct在C11中 想尝试一下 这是我所拥有的 struct struct a int aa s
  • R - 查找行中的所有重复项并替换

    我有一个大数据框 正在尝试查找一行中的重复元素 然后用空字符串替换所有重复值 X1 X2 X3 X4 X5 x 1 2 3 3 4 y 1 1 2 3 4 应该成为 X1 X2 X3 X4 X5 x 1 2 4 y 2 3 4 我可以在单个
  • Cython:将扩展类型序列作为另一个扩展类型的属性,可以访问 cdef 方法

    假设我定义了以下 Cython 类 cdef class Kernel cdef readonly double a def init self double a self a a cdef public double GetValue s
  • JDBI中如何动态绑定表名

    我尝试使用 SELECT COUNT FROM TableName 在 JDBI 中我使用了 bind Tablename MyTable 结果始终在单引号内 SELECT COUNT FROM MyTable 有没有正确的方法来参数化类似
  • 如何通信两个独立的python进程?

    我有两个 python 程序 我想对它们进行通信 它们都是系统服务 都不是由父进程 fork 的 有没有什么方法可以在不使用套接字的情况下做到这一点 例如 通过创建一些队列 gt 序列化它 gt 由其他进程反序列化并执行通信 或者写入执行通
  • Servlet 在某些点击或时间后停止在 Tomcat 服务器上工作

    我的一些 servlet 遇到了一个非常奇怪的问题 下面是我的配置 文件夹 A 在 Tomcat 目录中部署了 X 个 servlet 文件夹 B 在 Tomcat 目录中部署了 Y 个 servlet 经过一定时间或点击文件夹 B 中的任
  • GCC预处理,内置和命令行是做什么用的?

    我很好奇 GCC 预处理步骤的输出 更准确地说 以下两行的目的是什么 1
  • TFIDF 计算混淆

    我在网上找到了以下计算TFIDF的代码 https github com timtrueman tf idf blob master tf idf py 我在函数 def idf word documentList 中添加了 1 这样我就不
  • 最长已排序子序列的长度

    我的未排序数组是 string a new string 10 22 9 33 21 50 41 60 80 在这个数组中 10 22 33 50 60 80按升序排列 所以输出必须是6 一般来说 我想要由数组元素组成并从第一个元素开始的升
  • 将列表绑定到数据源

    我希望能够将列表绑定到列表框数据源 并且当修改列表时 列表框的 UI 会自动更新 Winform 不是 ASP 这是一个示例 private List
  • 应该在代码中的什么位置保存不变的数据?

    我已经根据数据库中的表定义了模型 现在有一些模型的数据几乎没有变化 例如 电子商务网站销售的产品类别 产品发货城市等 这些不会经常更改 因此为了避免影响数据库 目前将它们保存为静态变量 问题是这些静态变量应该位于代码中的哪个位置 目前 在
  • 在 F# 中,如何生成 Func 类型的表达式?

    我正在使用需要 Func 类型值的 api 具体来说 我想打电话给ModelMetadataProviders Current GetMetadataForType http msdn microsoft com en us library