在一行中编写 F# 对象表达式

2023-11-25

当我准备为 F# 编写一个代码生成器时,我想知道是否可以通过仅生成单行值来避免陷入缩进混乱。

作为这项工作的一部分,我正在考虑如何在一行中表达对象表达式,但没有成功,除非在详细模式下。

let Expr() = (let ToString = "ToString" in { new System.Object() with member this.ToString() = ToString; member this.GetHashCode() = ToString.GetHashCode()})

问题是我不想在详细模式下生成所有代码,这是一个兼容性功能。还有其他选择吗?

预先非常感谢您的见解!
弗朗索瓦


我要求这个的原因是我必须在任意表达式中生成对象表达式,并且我想避免计算当前行中的字符数计算下一行需要缩进多少。


(无耻插件)我维护F# 源代码格式化程序这暴露了APIs漂亮地打印完整的 F# 3.0 语法。您有多种选择:

  • 使用详细模式实现代码生成器,并在输出上运行源代码格式化程序 API。然后您不必担心缩进,并且在详细模式下换行非常容易。

  • 使用函数组合器实现代码生成器。有许多FormatConfig 模块中的组合器您可以复制和修改。 F#缩进规则清晰;你可以阅读更多内容本文.

  • 您可能有一个用于漂亮打印的 AST。如果您喜欢轻量级解决方案,F# Compiler CodeDom 有相似的组合器用于代码生成。

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

在一行中编写 F# 对象表达式 的相关文章

随机推荐