继续“F# 中是否存在与 C# 的 nameof(..) 等效的内容?”

2024-04-14

参考F# 中是否存在相当于 C# 的 nameof(..) 的功能? https://stackoverflow.com/questions/48304398/is-there-an-equivalent-of-cs-nameof-in-f

在以下情况下如何使用或扩展 nameof 函数?

let nameof (q:Expr<_>) = 
    match q with 
    | Patterns.Let(_, _, DerivedPatterns.Lambdas(_, Patterns.Call(_, mi, _))) -> mi.Name
    | Patterns.PropertyGet(_, mi, _) -> mi.Name
    | DerivedPatterns.Lambdas(_, Patterns.Call(_, mi, _)) -> mi.Name
    | _ -> failwith "Unexpected format"

let any<'R> : 'R = failwith "!"

let s = _nameof <@ System.Char.IsControl @> //OK

type A<'a>() = 
    static member MethodWith2Pars(guid:Guid, str:string) = ""
    static member MethodWith2Pars(guid:Guid, ba:byte[]) = ""

let s1 = nameof <@ A<_>.MethodWith2Pars @> //Error  FS0503  A member or object constructor 'MethodWith2Pars' taking 1 arguments is not accessible from this code location. All accessible versions of method 'MethodWith2Pars' take 2 arguments
let s2 = nameof <@ A<_>.MethodWith2Pars : Guid * string -> string @> //Same error

编译器给出以下错误:

错误 FS0503 无法从此代码位置访问采用 1 个参数的成员或对象构造函数“MethodWith2Pars”。方法“MethodWith2Pars”的所有可访问版本都采用 2 个参数


您链接的答案有点过时了。 F# 5.0(最近发布)提供了真正的nameof特征。详见公告:https://devblogs.microsoft.com/dotnet/announcing-f-4-7/#nameof https://devblogs.microsoft.com/dotnet/announcing-f-4-7/#nameof

自 F# 4.7 起,此功能也在预览版中存在:https://devblogs.microsoft.com/dotnet/announcing-f-4-7/#nameof https://devblogs.microsoft.com/dotnet/announcing-f-4-7/#nameof

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

继续“F# 中是否存在与 C# 的 nameof(..) 等效的内容?” 的相关文章

  • 在可移植类库中使用 F# JsonProvider 失败

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

    我想写一些类似的东西 let timeit x a gt b let start System DateTime Now x let duration System DateTime Now start printfn time usage
  • 继续“F# 中是否存在与 C# 的 nameof(..) 等效的内容?”

    参考F 中是否存在相当于 C 的 nameof 的功能 https stackoverflow com questions 48304398 is there an equivalent of cs nameof in f 在以下情况下如何
  • 在 F# 列表中键入扩展名

    假设我有一个类型 let MyType some info 但是 它通常用于列表 MyType list 所以我可以定义 let MyTypeList MyType list 有没有办法在 MyTypeList 上定义类型增强 我的实际情况
  • 使用 F# 3.0 进行动态 SQL 查询?

    我尝试过使用 FLINQ 但它对于 F 3 0 beta 来说已经过时了 有人可以指导我如何在 F 中创建动态 SQL 查询吗 我们最近开发了一个库 FSharpComposableQuery 旨在支持 F 3 0 及以上版本中更灵活的查询
  • F# 类型函数和 [] 属性

    这两个 F 类型函数有什么区别 let defaultInstance1 lt a when a new unit gt a gt new a
  • Silverlight 如何确定程序集是“Silverlight”?

    我正在尝试从 F 编译代码以在 Silverlight 中使用 我编译 noframework cliroot C program Files Microsoft Silverlight 2 0 31005 0 standalone 这会生
  • .NET 4 自旋锁

    以下测试代码 F 未返回我期望的结果 let safeCount let n 1000000 let counter ref 0 let spinlock ref lt SpinLock false let run i0 i1 for i
  • 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
  • 绘图 Deedle 框架

    我有以下代码 let mychart frame GetAllSeries gt Seq iter fun key value gt Chart Line value Name key gt Chart Combine where fram
  • 如何搭建Windows Phone开发环境并使用F#开发应用程序?

    我已经下载了Windows Phone开发工具 但我不知道如何使用F 来开发应用程序 目前是C 将 F 和 Windows Phone 模板安装到 Visual Studio 中可以让生活变得更轻松 如果您打开 Visual Studio
  • 如何判断 F# 函数是否是纯函数?

    假设我有这两个 F 函数 let sq x x x let tm DateTime Now 显然 sq 是纯的 因为它对于给定的输入总是返回相同的值 而 tm 是不纯的 因为每次调用它时都会返回不同的值 一般来说 有没有一种方法可以确定 F
  • 如何在插件场景中实现程序集绑定重定向?

    我有一个plugin P延伸和application A NET40 我无法控制 P 程序集 NET40 有一个shared dependency D NET35 P和D都依赖于FSharp Core 但版本不同 P是针对FSharp Co
  • 在 F# 中“合并”受歧视的联合?

    继从这个问题 https stackoverflow com questions 53506325 result vs raise in f async 我在组合不同类型时遇到问题Result类型在一起 以下是一个人为的示例 不是真实的代码
  • ProjectCracker 与 .netstandard 2.0 项目

    我的团队最近从使用 net 框架转向使用 net 标准 2 0 作为我们的 F 库 我们有一些在项目上运行的内部脚本来自动生成 Markdown 文档 这些脚本使用 F 编译器服务 SDK 来分析代码并检索类型元数据 文档注释等 我们正在使
  • 管道序列中的异常处理

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

    我正在尝试摆脱我使用的警告appSettings在 WPF 项目中 应用程序配置
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq

随机推荐